Kurso de Raku / Progresinta / Moduloj / Bazaj konoj pri moduloj

Importado

Estas pli ol unu maniero alporti modulon en programon. La tri deklaroj use, need kaj require diferencas laŭ tio, kiam la modulo estas ŝargata kaj kion ĝi disponebligos.

use

Vi jam renkontis use. Ĝi ŝargas la modulon je kompiltempo kaj importas ĝiajn eksportitajn nomojn, do ili estas vokitaj rekte:

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

need

need ankaŭ ŝargas la modulon je kompiltempo, sed ĝi ne importas la eksportitajn nomojn. Vi ankoraŭ atingas la our-variablojn de la modulo per la nomo de la modulo:

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

Post need Greeting, nuda hello(...) ne estus rekonata, ĉar nenio estis importita — nur la kvalifikitaj nomoj, kiel $Greeting::version, estas disponeblaj.

require

require ŝargas la modulon je rultempo anstataŭ je kompiltempo. Tio utilas, kiam vi ne scias ĝis la rulado de la programo, ĉu modulo estos bezonata, ekzemple kiam ĝia nomo estas decidata per uzanta enigo.

Ĉar la ŝargado okazas je rultempo, nenio estas importita aŭtomate. Listigi la simbolojn, kiujn vi volas, en angulaj krampoj post la nomo alportas ilin, do ili povas esti vokitaj rekte:

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

Por ĉiutaga uzo, use estas tio, kion vi volas; need kaj require estas tie por la malpli oftaj kazoj.

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Kursa navigado

Kvizo — use   |   Kvizo — use kontraŭ need


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.