Corso di Raku / Avanzato / Moduli / Pacchetti e namespace / Exercises / Un nome annidato

Soluzione: Un nome annidato

Ecco una possibile soluzione al compito.

Codice

module Outer {
    module Inner {
        our $base = 10;
        our sub doubled { $base * 2 }
    }
}

say $Outer::Inner::base;
say Outer::Inner::doubled();

🦋 Puoi trovare il codice sorgente nel file nested-name.raku.

Output

10
20

Commenti

  1. Annidare un namespace all’interno di un altro costruisce un percorso :: più lungo. Sia la variabile che la subroutine si trovano a due livelli di profondità, in Outer::Inner.

  2. Il nome completo $Outer::Inner::base raggiunge la variabile, e Outer::Inner::doubled() raggiunge la subroutine attraverso gli stessi due livelli. Il nome di una sub non ha sigillo, quindi a differenza della variabile non ha $ davanti.

  3. Entrambi i membri sono dichiarati con our, che è ciò che li rende visibili fuori dal loro modulo. Una dichiarazione my li avrebbe mantenuti privati all’interno di Inner.

Un nome annidato   |   Distribuzione di moduli