Kurso de Raku / Progresinta / Ujoj / Introspekto de ujoj
WHO kaj HOW
Du pliaj introspektaj iloj kompletigas la aron: HOW kaj
WHO.
HOW
Chiu valoro en Raku estas subtenata de metaobjekto — objekto
kiu scias kiel funkcias la tipo de la valoro. HOW
(mallongigo de Higher Order Workings) redonas tiun
metaobjekton:
my $x = 42;
say $x.HOW.^name; # Perl6::Metamodel::ClassHOWVi uzis la metaobjekton la tutan tempon, eble sen rimarki. La
.^ en .^name estas metod-alvoko direktita tra
HOW. Tiuj chi du linioj estas ekvivalentaj:
my $x = 42;
say $x.^name; # Int
say $x.HOW.name($x); # IntDo $x.^name estas nur pli mallonga maniero skribi
$x.HOW.name($x). Rimarku ke la objekto estas denove
transdonita kiel argumento: la metaobjekto estas komuna por
chiu valoro de la tipo, do meta-metodo ricevas informon pri kiu objekto
ghi estas demandata. La formo .^ faras tion por vi
automate. (Por name la argumento hazarde estas ignorita,
sed transdoni ghin estas la korekta, generala formo — kelkaj
meta-metodoj ja uzas ghin.)
La samo validas por aliaj meta-metodoj kiujn vi eble renkontos,
ekzemple .^methods, kiu listigas la metodojn al kiuj valoro
respondas.
WHO
WHO redonas la pakon al kiu nomo apartenas — la
tabelon de simboloj difinitaj en tiu nomspaco:
say Int.WHO.^name; # StashStash (simbol-tabela hakilo) farighas utila kiam vi
laboras kun moduloj, kie ghi ebligas al vi serĉi la nomojn kiujn modulo
difinas. Ni revenos al ghi en la sekcio pri modula
introspekto; nuntempe sufichas scii ke WHO ekzistas kaj
kion ghi reprezentas.
Kursa navigado
← Uzante
VAR | Priskribi
variablon →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.