Cursus Raku / Geavanceerd / Containers / Speciale en dynamische variabelen

Ingebouwde speciale variabelen

Raku definieert een reeks variabelen voor je vooraf. De meeste zijn dynamisch (de *-twigil), dus — zoals je zag bij dynamische variabelen — kun je ze overal uitlezen en zelfs voor een bepaalde scope overschrijven. Hier zijn de variabelen die je het vaakst zult gebruiken.

Standaardstreams

Invoer en uitvoer lopen via drie dynamische variabelen: $*OUT (standaarduitvoer), $*ERR (standaardfout) en $*IN (standaardinvoer). say en print schrijven naar $*OUT; om tekst naar standaardfout te sturen, roep je de methode aan op $*ERR:

$*OUT.say('normal output'); # goes to standard output
$*ERR.say('a diagnostic');  # goes to standard error

Omdat deze dynamisch zijn, stuurt het omleiden van $*OUT in een blok de uitvoer van alles wat binnen dat blok wordt aangeroepen naar de nieuwe bestemming — zonder die code te hoeven aanpassen.

Het programma en zijn proces

Een paar variabelen beschrijven het draaiende programma zelf:

say $*PROGRAM-NAME; # the path of the script being run
say $*PID;          # the process id of this program
say $*CWD;          # the current working directory

Hun waarden veranderen per uitvoering, dus er wordt hier geen vaste uitvoer getoond.

Commandoregel en omgeving

De argumenten en de omgevingsvariabelen komen aan in twee kant-en-klare containers:

  • @*ARGS — de lijst met commandoregelargumenten (dezelfde die een MAIN-subroutine ontvangt)
  • %*ENV — de omgevingsvariabelen, als een hash
say @*ARGS.elems; # how many arguments were passed
say %*ENV<HOME>;  # the value of the HOME environment variable

Deze ingebouwde variabelen besparen je het handmatig opzetten van dezelfde informatie. En omdat ze dynamisch zijn en via de call stack worden opgezocht, kan elke $*-ingebouwde variabele voor een scope worden overschreven, precies zoals een eigen $*-variabele.

Naast deze dynamische variabelen heeft Raku ook de compile-time ?-ingebouwde variabelen — $?FILE en $?LINE — die je al bent tegengekomen op de pagina over twigils.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Quiz — Dynamische variabelen   |   Quiz — Speciale variabelen


💪 Of ga direct naar de oefeningen in deze sectie.