Kurso de Raku / Progresinta / Ujoj / Introspekto de ujoj
Uzante WHAT
WHAT estas pseudo-metodo kiu donas aliron al la tipo de
valoro. Vi povas uzi ghin tre simile al .^name:
my $var = 42;
say $var.^name;
say $var.WHAT;Ambau presas la tipon kun malgranda diferenco en prezento:
.^name donas la nudan nomon, dum WHAT montras
la tip-objekton, skribitan en krampoj:
Int
(Int)Por variablo sen tiplimigo, la tipo komencas kiel Any.
Tuj kiam vi atribuas valoron, ambau ^name kaj
WHAT sekvas la tipon de la konservita valoro:
my $var;
say $var.^name; # Any
say $var.WHAT; # (Any)
$var = 'Hello';
say $var.^name; # Str
say $var.WHAT; # (Str)Kun tiplimigo, la tipo estas konata tuj, ech antau ol io ajn estas atribuita:
my Str $var;
say $var.^name; # Str
say $var.WHAT; # (Str)
$var = 'Hello';
say $var.^name; # Str
say $var.WHAT; # (Str)Komparado de tip-objektoj
Char WHAT redonas la tip-objekton mem, vi povas kompari
du el ili per la operatoro de valor-identeco ===,
kiu demandas chu ambau flankoj estas ghuste la sama valoro. Ekzistas
chiam nur unu tip-objekto por chiu tipo, do tio estas pura maniero testi
chu du valoroj havas la saman tipon:
my $a = 42;
my $b = 100;
say $a.WHAT === $b.WHAT; # True — both are Int
say $a.WHAT === Int; # True
say $a.WHAT === Str; # FalseMale al ==, kiu komparas nombrojn, ===
komparas identecon, do ghi funkcias por tip-objektoj (kaj aliaj valoroj)
rekte.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Kursa navigado
← Introspekto de ujoj |
Kvizo — WHAT
kaj ^name →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.