Raku-Kurs / Fortgeschritten / Subroutinen

Verschachtelte Unterprogramme

Eine Unterroutine kann innerhalb einer anderen Unterroutine definiert werden. Eine verschachtelte Unterroutine ist eine normale Unterroutine, aber sie ist nur innerhalb der Unterroutine sichtbar, die sie enthält.

sub outer {
    sub inner {
        say 'I am the inner subroutine';
    }

    inner;
}

outer;

Das Programm gibt aus:

I am the inner subroutine

Hier wird inner innerhalb von outer deklariert, und outer ruft sie auf. Das funktioniert, weil inner im gesamten Körper von outer im Gültigkeitsbereich liegt.

Außerhalb von outer existiert der Name inner jedoch nicht. Das folgende Programm lässt sich nicht kompilieren:

sub outer {
    sub inner { 42 }
}

inner; # error: Undeclared routine: inner

Verschachtelung ist nützlich, wenn eine Hilfsroutine nur von einer einzigen Unterroutine benötigt wird. Sie darin zu belassen, macht deutlich, dass es sich um ein privates Detail handelt, und verhindert, dass sie versehentlich von anderswo aufgerufen wird.

Praxis

Lösen Sie 1 Quiz zum Inhalt dieses Themas.

Übungen

Dieser Abschnitt enthält 3 Übungen. Sehen Sie sich alle Themen dieses Abschnitts an, bevor Sie mit den Übungen beginnen.

  1. Ein privater Helfer
  2. Über den äußeren Bereich schließen
  3. Eine innere Summe

Kursnavigation

Quiz — MAIN-Verwendung   |   Ein privater Helfer