Cursus Raku / Geavanceerd / Modules / Pakketten en naamruimten / Exercises / Een geneste naam
Oplossing: Een geneste naam
Hier is een mogelijke oplossing voor de opgave.
Code
module Outer {
module Inner {
our $base = 10;
our sub doubled { $base * 2 }
}
}
say $Outer::Inner::base;
say Outer::Inner::doubled();🦋 Je kunt de broncode vinden in het bestand nested-name.raku.
Uitvoer
10
20Opmerkingen
Het nesten van de ene naamruimte in de andere bouwt een langer
::-pad op. Zowel de variabele als de subroutine bevinden zich twee niveaus diep, inOuter::Inner.De volledige naam
$Outer::Inner::basebereikt de variabele, enOuter::Inner::doubled()bereikt de subroutine via dezelfde twee niveaus. Een subroutinenaam heeft geen sigil, dus in tegenstelling tot de variabele staat er geen$voor.Beide leden zijn gedeclareerd met
our, wat ze zichtbaar maakt buiten hun module. Eenmy-declaratie zou ze privé hebben gehouden binnenInner.