Curso de Raku / Avanzado / Módulos / Fundamentos de módulos / Exercises / Cargar en tiempo de ejecución
Solución: Cargar en tiempo de ejecución
Aquí hay una posible solución a la tarea.
Código
El programa, require-import.raku:
sub MAIN(Bool :$quiet) {
if $quiet {
say 'Silence.';
}
else {
require Greeting <&hello>;
say hello('Sam');
}
}🦋 Puedes encontrar ambos archivos fuente en el directorio exercises/advanced/modules-basics/require-at-runtime.
Salida
$ raku -I. require-import.raku
Hello, Sam!
$ raku -I. require-import.raku --quiet
Silence.Comentarios
requirecarga el módulo en tiempo de ejecución en lugar de en tiempo de compilación. Por sí solo no importa nada, por lo que un simplehellosería desconocido.La lista
<&hello>le indica arequireque importe ese símbolo, por lo que después de la instrucción se puede llamar directamente ahello('Sam'), dando como resultadoHello, Sam!.Para esto es
require: dado que se ejecuta en tiempo de ejecución, puede estar dentro de unif. Cuando se proporciona--quiet, esa rama se omite y el módulo nunca se carga — algo que unuseen tiempo de compilación no podría evitar.
Navegación del curso
← Cargar en tiempo de ejecución | Introspección de módulos →