Curso de Raku / Avanzado / Módulos / Paquetes y espacios de nombres / Exercises / Un nombre anidado

Solución: Un nombre anidado

Aquí hay una posible solución para la tarea.

Código

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

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

🦋 Puedes encontrar el código fuente en el archivo nested-name.raku.

Salida

10
20

Comentarios

  1. Anidar un espacio de nombres dentro de otro construye una ruta :: más larga. Tanto la variable como la subrutina están a dos niveles de profundidad, en Outer::Inner.

  2. El nombre completo $Outer::Inner::base accede a la variable, y Outer::Inner::doubled() accede a la subrutina a través de los mismos dos niveles. El nombre de una subrutina no lleva sigilo, por lo que a diferencia de la variable no tiene un $ delante.

  3. Ambos miembros se declaran con our, que es lo que los hace visibles fuera de su módulo. Una declaración con my los habría mantenido privados dentro de Inner.

← Un nombre anidado   |   Distribución de módulos →