Raku-Kurs / Fortgeschritten / Subroutinen / Verschachtelte Unterprogramme / Exercises / Über den äußeren Bereich schließen
Lösung: Über den äußeren Bereich schließen
Hier ist eine mögliche Lösung der Aufgabe.
Code
sub greet($name) {
sub message {
"Hello, $name!";
}
say message;
}
greet('Anna');🦋 Den Quellcode finden Sie in der Datei closure-over-outer.raku.
Ausgabe
Hello, Anna!Kommentare
messagenimmt keine Argumente entgegen, kann aber dennoch$nameverwenden. Eine verschachtelte Unterroutine schließt über die lexikalischen Variablen der umgebenden Unterroutine ab, sodass das äußere$nameim Gültigkeitsbereich liegt.Wenn
greet('Anna')ausgeführt wird, ist$namegleich'Anna', sodassmessageHello, Anna!zurückgibt. Diese gemeinsame Nutzung des umgebenden Gültigkeitsbereichs macht verschachtelte Helfer zu mehr als nur versteckten Funktionen.