Raku-Kurs / Fortgeschritten / Container / Spezielle und dynamische Variablen
Eingebaute spezielle Variablen
Raku definiert eine Reihe von Variablen für dich vor. Die meisten
davon sind dynamisch (das *-Twigil), also kannst
du sie — wie du bei den dynamischen
Variablen gesehen hast — überall lesen und sogar für einen
Geltungsbereich überschreiben. Hier sind diejenigen, die du am
häufigsten brauchen wirst.
Standardströme
Ein- und Ausgabe fließen durch drei dynamische Variablen:
$*OUT (Standardausgabe), $*ERR
(Standardfehlerausgabe) und $*IN (Standardeingabe).
say und print schreiben nach
$*OUT; um Text stattdessen an die Standardfehlerausgabe zu
senden, rufst du die Methode auf $*ERR auf:
$*OUT.say('normal output'); # goes to standard output
$*ERR.say('a diagnostic'); # goes to standard errorDa diese dynamisch sind, leitet das Umdeklarieren von
$*OUT in einem Block die Ausgabe von allem, was innerhalb
dieses Blocks aufgerufen wird, an das neue Ziel um — ohne irgendetwas an
diesem Code zu ändern.
Das Programm und sein Prozess
Einige Variablen beschreiben das laufende Programm selbst:
say $*PROGRAM-NAME; # the path of the script being run
say $*PID; # the process id of this program
say $*CWD; # the current working directoryIhre Werte ändern sich von Ausführung zu Ausführung, daher wird hier keine feste Ausgabe gezeigt.
Kommandozeile und Umgebung
Die Argumente und die Umgebung kommen in zwei vorgefertigten Containern:
@*ARGS— die Liste der Kommandozeilenargumente (dieselben, die eineMAIN-Subroutine empfängt)%*ENV— die Umgebungsvariablen als Hash
say @*ARGS.elems; # how many arguments were passed
say %*ENV<HOME>; # the value of the HOME environment variableDiese eingebauten Variablen ersparen dir, dieselben Informationen von
Hand zu verdrahten. Und weil sie dynamisch sind und über den
Aufrufstapel aufgelöst werden, kann jede $*-eingebaute
Variable für einen Geltungsbereich genau wie eine eigene
$*-Variable überschrieben werden.
Neben diesen dynamischen Variablen hat Raku auch die
?-Kompilierzeit-Variablen — $?FILE und
$?LINE — die du bereits auf der Seite über Twigils kennengelernt
hast.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← Quiz — Dynamische Variablen | Quiz — Spezielle Variablen →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.