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 not

Die Angabe eines Tags importiert stattdessen diese Gruppe — und, vielleicht überraschend, nicht auch die Standardgruppe:

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

Wenn 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 goodbye

Zwei 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.