Raku-Kurs / Fortgeschritten / Module / Pakete und Namensräume
Pakete und Module
Das Schlüsselwort package führt einen Namensraum ein.
Alles, was darin mit our deklariert wird, wird Teil dieses
Namensraums und kann von außen über den Package-Namen und den
::-Trenner erreicht werden:
package Maths {
our $pi = 3.14;
our sub double($x) { $x * 2 }
}
say $Maths::pi; # 3.14
say Maths::double(5); # 10Die Variable wird als $Maths::pi erreicht — das Sigil,
dann der Package-Name, dann der Variablenname. Eine Subroutine wird als
Maths::double(...) aufgerufen.
Sowohl package als auch module erzeugen
einen Namensraum; sie unterscheiden sich darin, was sie darüber hinaus
tun. Ein module ist die übliche Wahl für eine Einheit
wiederverwendbaren Codes, während ein einfaches package nur
der Namensraum ohne Extras ist. (Eine class, die du im nächsten Teil kennenlernen wirst, erzeugt ebenfalls
einen Namensraum und fügt zusätzlich objektorientierte Mechanismen
hinzu.)
module Greet {
our sub hello { 'hi' }
}
say Greet::hello; # hiDer Namensraum, den du bisher von module erhalten hast,
ist also derselbe Mechanismus, den ein package allein
bereitstellt. Die Wahl zwischen ihnen ist hauptsächlich eine Frage der
Absicht: module für Bibliotheken, package für
einen reinen Namensraum — und, sobald du bei Objekten angekommen bist,
class für Typen.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← Pakete und Namensräume | Quiz — Pakete →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.