Курс языка программирования 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; # error: Undeclared routine: innerВложенность полезна, когда вспомогательная подпрограмма нужна только одной подпрограмме. Размещение её внутри делает очевидным, что это внутренняя деталь реализации, и предотвращает случайный вызов из другого места.
Практика
Пройдите 1 тест по содержанию этой темы.
Упражнения
В этом разделе 3 упражнения. Прежде чем приступать к практике, изучите все темы раздела.