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
20

Komentāri

  1. 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.

  2. Pilnais nosaukums $Outer::Inner::base sasniedz mainīgo, un Outer::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 $.

  3. Abi elementi ir deklarēti ar our, kas padara tos redzamus ārpus to moduļa. Deklarācija ar my būtu padarījusi tos privātus modulim Inner.

Kursa navigācija

Ligzdots nosaukums   |   Moduļu izplatīšana 🆕