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

  1. Приватний помічник
  2. Замикання над зовнішньою
  3. Внутрішня сума

Навігація курсом

Тест — Використання MAIN   |   Приватний помічник