Курс по 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   |   Частен помощник