Raku kurss / Padziļināti / Moduļi / Pakotnes un vārdtelpas 🆕 / Exercises / Ligzdots nosaukums
Risinājums: Ligzdots nosaukums
Šeit ir viens no iespējamiem uzdevuma risinājumiem.
Kods
module Outer {
module Inner {
our $base = 10;
our sub doubled { $base * 2 }
}
}
say $Outer::Inner::base;
say Outer::Inner::doubled();🦋 Šīs programmas pirmkodu var atrast failā nested-name.raku.
Izvade
10
20Komentāri
Vienas vārdtelpas ievietošana otrā veido garāku
::ceļu. Gan mainīgais, gan apakšprogramma atrodas divos līmeņos dziļi, vārdtelpāOuter::Inner.Pilnais nosaukums
$Outer::Inner::basesasniedz mainīgo, unOuter::Inner::doubled()sasniedz apakšprogrammu caur tiem pašiem diviem līmeņiem. Apakšprogrammas nosaukumam nav sigila, tāpēc atšķirībā no mainīgā tam priekšā nav$.Abi elementi ir deklarēti ar
our, kas padara tos redzamus ārpus to moduļa. Deklarācija armybūtu padarījusi tos privātus modulimInner.