Raku-Kurs / Fortgeschritten / Module / Modul-Grundlagen / Exercises / Zur Laufzeit laden
Lösung: Zur Laufzeit laden
Hier ist eine mögliche Lösung der Aufgabe.
Code
Das Programm, require-import.raku:
sub MAIN(Bool :$quiet) {
if $quiet {
say 'Silence.';
}
else {
require Greeting <&hello>;
say hello('Sam');
}
}🦋 Du findest die Quelldateien im Verzeichnis exercises/advanced/modules-basics/require-at-runtime.
Ausgabe
$ raku -I. require-import.raku
Hello, Sam!
$ raku -I. require-import.raku --quiet
Silence.Kommentare
requirelädt das Modul zur Laufzeit statt zur Kompilierzeit. Allein importiert es nichts, weshalb ein einfacheshellounbekannt wäre.Die Liste
<&hello>weistrequirean, dieses eine Symbol zu importieren, sodass nach der Anweisunghello('Sam')direkt aufgerufen werden kann undHello, Sam!ergibt.Genau dafür ist
requireda: Da es zur Laufzeit ausgeführt wird, kann es innerhalb einesifstehen. Wenn--quietangegeben wird, wird dieser Zweig übersprungen und das Modul nie geladen — etwas, das einusezur Kompilierzeit nicht vermeiden könnte.