Corso di Raku / Avanzato / Moduli / Basi dei moduli

Tag di esportazione

Contrassegnare una subroutine con is export la inserisce nel gruppo di esportazione predefinito di un modulo — i nomi che un semplice use importa. Assegnando un tag a is export, puoi organizzare le esportazioni in gruppi denominati e lasciare che ogni programma scelga il set desiderato.

Un tag si scrive tra parentesi dopo is export:

unit module Greeting;

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

hello non ha tag, quindi appartiene al gruppo predefinito; goodbye e taggato :partings.

Un semplice use importa solo il gruppo predefinito:

use Greeting;      # hello is available; goodbye is not

Specificando un tag si importa quel gruppo invece — e, forse sorprendentemente, non anche quello predefinito:

use Greeting :partings; # goodbye is available; hello is not

Richiedere :partings da esattamente quel gruppo. Per importare tutto cio che un modulo esporta, usa il tag integrato :ALL:

use Greeting :ALL; # both hello and goodbye

Due tag speciali meritano di essere conosciuti. :ALL e supportato da ogni modulo e importa tutte le sue esportazioni. :MANDATORY e un tag che puoi applicare a una routine che deve essere importata indipendentemente dal tag scelto dal chiamante.

Ogni tag e in realta un pacchetto all’interno del pacchetto EXPORT del modulo — Greeting::EXPORT::partings, per esempio — che e esattamente cio che l’introspezione dei moduli elenca. I tag permettono a un modulo piu grande di mantenere ridotta la superficie predefinita, offrendo al contempo funzionalita aggiuntive su richiesta.

Pratica

Risolvi 1 quiz sul contenuto di questo argomento.

Quiz — use vs need   |   Quiz — Tag di esportazione


💪 Oppure vai direttamente agli esercizi di questa sezione.