Raku kurss / Padziļināti / Konteineri / Konteineru introspekcija
WHAT izmantošana
WHAT ir pseidometode, kas nodrošina piekļuvi vērtības
tipam. To var izmantot līdzīgi kā .^name:
my $var = 42;
say $var.^name;
say $var.WHAT;Abi izdrukā tipu ar nelielu atšķirību noformējumā:
.^name dod tīru nosaukumu, savukārt WHAT
parāda tipa objektu, ierakstītu iekavās:
Int
(Int)Mainīgajam bez tipa ierobežojuma tips sākas kā Any.
Tiklīdz piešķirat vērtību, gan ^name, gan WHAT
seko saglabātās vērtības tipam:
my $var;
say $var.^name; # Any
say $var.WHAT; # (Any)
$var = 'Hello';
say $var.^name; # Str
say $var.WHAT; # (Str)Ar tipa ierobežojumu tips ir zināms uzreiz, pat pirms kaut kas ir piešķirts:
my Str $var;
say $var.^name; # Str
say $var.WHAT; # (Str)
$var = 'Hello';
say $var.^name; # Str
say $var.WHAT; # (Str)Tipa objektu salīdzināšana
Tā kā WHAT atgriež pašu tipa objektu, divus no tiem var
salīdzināt ar vērtības identitātes operatoru ===,
kas pārbauda, vai abas puses ir viena un tā pati vērtība. Katram tipam
pastāv tikai viens tipa objekts, tāpēc šis ir tīrs veids, kā pārbaudīt,
vai divām vērtībām ir vienāds tips:
my $a = 42;
my $b = 100;
say $a.WHAT === $b.WHAT; # True — abi ir Int
say $a.WHAT === Int; # True
say $a.WHAT === Str; # FalseAtšķirībā no ==, kas salīdzina skaitļus,
=== salīdzina identitāti, tāpēc tas darbojas tieši ar tipa
objektiem (un citām vērtībām).
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Kursa navigācija
← Konteineru introspekcija
| Viktorīna —
WHAT un ^name →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.