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
20Comentarios
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, enOuter::Inner.El nombre completo
$Outer::Inner::baseaccede a la variable, yOuter::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.Ambos miembros se declaran con
our, que es lo que los hace visibles fuera de su módulo. Una declaración conmylos habría mantenido privados dentro deInner.