Kurso de Raku / Progresinta / Ujoj / Specialaj kaj dinamikaj variabloj
Enkonstruitaj specialaj variabloj
Raku antaŭdifinas aron de variabloj por vi. Plejparto el ili estas
dinamikaj (la tvigilo *), do — kiel vi vidis ĉe dinamikaj
variabloj — vi povas legi ilin ĉie kaj eĉ anstataŭigi ilin por certa
amplekso. Jen tiuj, kiujn vi uzos plej ofte.
Normaj fluoj
Enigo kaj eligo fluas tra tri dinamikaj variabloj: $*OUT
(norma eligo), $*ERR (norma eraro), kaj $*IN
(norma enigo). say kaj print skribas al
$*OUT; por sendi tekston al norma eraro anstataŭe, voku la
metodon sur $*ERR:
$*OUT.say('normal output'); # goes to standard output
$*ERR.say('a diagnostic'); # goes to standard errorĈar ĉi tiuj estas dinamikaj, redirektado de $*OUT en
bloko sendas la eligon de ĉio, kio estas vokita ene de tiu bloko, al la
nova celo — sen ŝanĝi iun ajn el tiu kodo.
La programo kaj ĝia procezo
Kelkaj variabloj priskribas la rulantan programon mem:
say $*PROGRAM-NAME; # the path of the script being run
say $*PID; # the process id of this program
say $*CWD; # the current working directoryIliaj valoroj ŝanĝiĝas de ekzekuto al ekzekuto, do neniu fiksa eligo estas montrata ĉi tie.
Komandlinio kaj medio
La argumentoj kaj la medio alvenas en du pretaj ujo:
@*ARGS— la listo de komandliniaj argumentoj (la samaj, kiujn subrutinoMAINricevas)%*ENV— la mediaj variabloj, kiel hakilo (asocia tabelo)
say @*ARGS.elems; # how many arguments were passed
say %*ENV<HOME>; # the value of the HOME environment variableĈi tiuj enkonstruitaj variabloj ŝparas al vi la bezonon mane aranĝi
la samajn informojn. Kaj ĉar ili estas dinamikaj, serĉataj tra la voka
stako, ĉiu enkonstruita $*-variablo povas esti
anstataŭigita por certa amplekso precize kiel via propra
$*-variablo.
Krom ĉi tiuj dinamikaj variabloj, Raku ankaŭ havas la kompiltempe
enkonstruitajn ?-variablojn — $?FILE kaj
$?LINE — kiujn vi jam renkontis sur la paĝo pri tvigiloj.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Kursa navigado
← Kvizo — Dinamikaj variabloj | Kvizo — Specialaj variabloj →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.