Raku kurss / Padziļināti / Moduļi / Moduļu pamati / Exercises / Ielādēt izpildes laikā

Risinājums: Ielādēt izpildes laikā

Šeit ir iespējams risinājums uzdevumam.

Kods

Programma require-import.raku:

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

🦋 Abus pirmkoda failus atrodiet direktorijā exercises/advanced/modules-basics/require-at-runtime.

Izvade

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

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

Komentāri

  1. require ielādē moduli izpildes, nevis kompilēšanas laikā. Pats par sevi tas neko neimportē, un tieši tāpēc kails hello būtu nezināms.

  2. Saraksts <&hello> liek require importēt šo vienu simbolu, tāpēc pēc šī teikuma hello('Sam') var izsaukt tieši, dodot Hello, Sam!.

  3. Tieši tam require ir domāts: tā kā tas izpildās izpildes laikā, tas var atrasties if iekšienē. Kad dots --quiet, šis zars tiek izlaists un modulis nekad netiek ielādēts — kaut kas tāds, no kā kompilēšanas laika use izvairīties nespētu.

Kursa navigācija

Ielādēt izpildes laikā   |   Moduļu introspekcija