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

Eksportaj etikedoj

Markado de subprogramo per is export metas ĝin en la defaŭltan eksportgrupon de modulo — la nomojn, kiujn simpla use alportas. Donante al is export etikedon, vi povas ordigi eksportojn en nomitajn grupojn kaj lasi ĉiun programon elekti la aron, kiun ĝi volas.

Etikedo estas skribita en krampoj post is export:

unit module Greeting;

sub hello($name)   is export            { "Hello, $name!" }
sub goodbye($name) is export(:partings) { "Goodbye, $name!" }

hello ne havas etikedon, do ĝi apartenas al la defaŭlta grupo; goodbye estas etikedita per :partings.

Simpla use importas nur la defaŭltan grupon:

use Greeting;      # hello estas disponebla; goodbye ne estas

Nomante etikedon importas tiun grupon anstataŭe — kaj, eble surprize, ne la defaŭltan kune:

use Greeting :partings; # goodbye estas disponebla; hello ne estas

Petante :partings donas al vi ĝuste tiun grupon. Por enporti ĉion, kion modulo eksportas, uzu la enkonstruitan etikedon :ALL:

use Greeting :ALL; # ambaŭ hello kaj goodbye

Du specialaj etikedoj indas scii. :ALL estas subtenata de ĉiu modulo kaj importas ĉiujn ĝiajn eksportojn. :MANDATORY estas tia, kiun vi povas meti sur rutinon, kiu estu importita sendepende de tio, kiun etikedon la vokanto elektas.

Ĉiu etikedo estas fakte pako ene de la EXPORT-pako de la modulo — Greeting::EXPORT::partings, ekzemple — kio estas precize tio, kion modula introspekto listigas. Etikedoj permesas al pli granda modulo teni sian defaŭltan surfacon malgranda, samtempe daŭre ofertante pliajn funkciojn laŭpete.

Praktiko

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

Kursa navigado

Kvizo — use kontraŭ need   |   Kvizo — Eksportaj etikedoj


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