Corso di Raku / Avanzato / Moduli / Basi dei moduli / Exercises / Caricare a runtime

Soluzione: Caricare a runtime

Ecco una possibile soluzione del compito.

Codice

Il programma, require-import.raku:

sub MAIN(Bool :$quiet) {
    if $quiet {
        say 'Silence.';
    }
    else {
        require Greeting <&hello>;
        say hello('Sam');
    }
}

🦋 Puoi trovare entrambi i file sorgente nella directory exercises/advanced/modules-basics/require-at-runtime.

Output

$ raku -I. require-import.raku
Hello, Sam!

$ raku -I. require-import.raku --quiet
Silence.

Commenti

  1. require carica il modulo a tempo di esecuzione anziche al momento della compilazione. Da solo non importa nulla, motivo per cui un semplice hello non sarebbe riconosciuto.

  2. La lista <&hello> dice a require di importare quel singolo simbolo, cosi dopo l’istruzione hello('Sam') puo essere chiamato direttamente, producendo Hello, Sam!.

  3. Questo e lo scopo di require: poiche viene eseguito a tempo di esecuzione, puo trovarsi dentro un if. Quando viene passato --quiet, quel ramo viene saltato e il modulo non viene mai caricato — cosa che un use al momento della compilazione non potrebbe evitare.

Caricare a runtime   |   Introspezione dei moduli