Raku-Kurs / Fortgeschritten / Module / Pakete und Namensräume / Exercises / Ein verschachtelter Name
Lösung: Ein verschachtelter Name
Hier ist eine mögliche Lösung der Aufgabe.
Code
module Outer {
module Inner {
our $base = 10;
our sub doubled { $base * 2 }
}
}
say $Outer::Inner::base;
say Outer::Inner::doubled();🦋 Du findest den Quellcode in der Datei nested-name.raku.
Ausgabe
10
20Kommentare
Das Verschachteln eines Namensraums in einem anderen ergibt einen längeren
::-Pfad. Sowohl die Variable als auch die Subroutine befinden sich zwei Ebenen tief inOuter::Inner.Der vollständige Name
$Outer::Inner::baseerreicht die Variable, undOuter::Inner::doubled()erreicht die Subroutine über dieselben zwei Ebenen. Ein Subroutinenname hat kein Sigil, daher steht im Gegensatz zur Variable kein$davor.Beide Mitglieder sind mit
ourdeklariert, wodurch sie außerhalb ihres Moduls sichtbar werden. Einemy-Deklaration hätte sie privat inInnergehalten.