Курс языка программирования 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 упражнения. Прежде чем приступать к практике, изучите все темы раздела.

  1. Приватный помощник
  2. Замыкание на внешнюю переменную
  3. Внутренняя сумма

Навигация по курсу

Тест — Использование MAIN   |   Приватный помощник