Curso de Raku / Avanzado / Módulos / Fundamentos de módulos

Importar

Hay más de una forma de incorporar un módulo a un programa. Las tres instrucciones use, need y require difieren en cuándo se carga el módulo y en qué pone a disposición.

use

Ya conoces use. Carga el módulo en tiempo de compilación e importa sus nombres exportados, para que puedan llamarse directamente:

use Greeting;
say hello('Anna'); # Hello, Anna!

need

need también carga el módulo en tiempo de compilación, pero no importa los nombres exportados. Aun así, puedes acceder a las variables our del módulo a través del nombre del módulo:

need Greeting;
say $Greeting::version; # 1.0

Después de need Greeting, un simple hello(...) no sería reconocido, porque no se importó nada — solo los nombres calificados, como $Greeting::version, están disponibles.

require

require carga el módulo en tiempo de ejecución en lugar de en tiempo de compilación. Esto es útil cuando no sabes hasta que el programa se ejecuta si un módulo será necesario, por ejemplo cuando su nombre lo decide la entrada del usuario.

Dado que la carga ocurre en tiempo de ejecución, nada se importa automáticamente. Listar los símbolos que deseas entre corchetes angulares después del nombre los incorpora, para que puedan llamarse directamente:

require Greeting <&hello>;
say hello('Anna'); # Hello, Anna!

Para el uso cotidiano, use es lo que necesitas; need y require están ahí para los casos menos comunes.

Práctica

Resuelve 1 cuestionario sobre el contenido de este tema.

Quiz — use   |   Quiz — use vs need


💪 O ve directamente a los ejercicios de esta sección.