Raku-Kurs / Fortgeschritten / Module / Modul-Grundlagen
Export-Tags
Eine Subroutine mit is export zu markieren, platziert
sie in der Standard-Exportgruppe eines Moduls — die Namen, die
ein einfaches use einbringt. Indem du
is export ein Tag gibst, kannst du Exporte in
benannte Gruppen sortieren und jedes Programm die gewünschte Menge
auswählen lassen.
Ein Tag wird in Klammern nach is export geschrieben:
unit module Greeting;
sub hello($name) is export { "Hello, $name!" }
sub goodbye($name) is export(:partings) { "Goodbye, $name!" }hello hat kein Tag, gehört also zur Standardgruppe;
goodbye ist mit :partings getaggt.
Ein einfaches use importiert nur die Standardgruppe:
use Greeting; # hello is available; goodbye is notDie Angabe eines Tags importiert stattdessen diese Gruppe — und, vielleicht überraschend, nicht auch die Standardgruppe:
use Greeting :partings; # goodbye is available; hello is notWenn du :partings anforderst, erhältst du genau diese
Gruppe. Um alles zu importieren, was ein Modul exportiert, verwende das
eingebaute Tag :ALL:
use Greeting :ALL; # both hello and goodbyeZwei besondere Tags sind wissenswert. :ALL wird von
jedem Modul unterstützt und importiert alle seine Exporte.
:MANDATORY kannst du auf eine Routine setzen, die immer
importiert werden soll, egal welches Tag der Aufrufer wählt.
Jedes Tag ist eigentlich ein Paket innerhalb des
EXPORT-Pakets des Moduls — zum Beispiel
Greeting::EXPORT::partings — was genau das ist, was die Modul-Introspektion
auflistet. Tags ermöglichen es einem größeren Modul, seine
Standardoberfläche klein zu halten und trotzdem zusätzliche Funktionen
auf Anfrage anzubieten.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← Quiz —
use vs need | Quiz —
Export-Tags →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.