Курс Raku / Розширені / Підпрограми
Вкладені підпрограми
Підпрограму можна визначити всередині іншої підпрограми. Вкладена підпрограма є звичайною підпрограмою, але видима лише в межах тієї, що її містить.
sub outer {
sub inner {
say 'I am the inner subroutine';
}
inner;
}
outer;Програма виводить:
I am the inner subroutineТут inner оголошено всередині outer, і
outer її викликає. Це працює, бо inner
перебуває в області видимості впродовж усього тіла
outer.
Проте за межами outer імені inner не існує.
Наведена програма не компілюється:
sub outer {
sub inner { 42 }
}
inner; # помилка: Undeclared routine: innerВкладення корисне, коли допоміжна підпрограма потрібна лише одній підпрограмі. Тримання її всередині ясно показує, що це приватна деталь, і не дає випадково викликати її звідкись іще.
Практика
Виконайте 1 тест за змістом цієї теми.
Вправи
У цьому розділі 3 вправи. Перш ніж братися до практики, вивчіть усі теми розділу.