Курс Raku / Розширені / Контейнери / Інтроспекція контейнерів
Використання VAR
VAR — це псевдометод, що повертає об’єкт контейнера,
який лежить в основі. Для скалярної змінної виклик .VAR
повертає контейнер Scalar, що стоїть за нею.
^name
Маючи контейнер, можна запитати ім’я його класу через
.^name:
my $var1 = 42;
my $var2 = '42';
say $var1.^name; # Int
say $var1.VAR.^name; # Scalar
say $var2.^name; # Str
say $var2.VAR.^name; # Scalar.^name для змінної повертає тип значення
(Int або Str), а .VAR.^name
повертає тип контейнера, яким в обох випадках є
Scalar.
default
Метод default повертає типове значення контейнера — те,
що ви отримуєте, коли контейнер не містить нічого власного. Трейтом
is default ви задаєте його явно:
my Str $language is default('Raku');
say $language.VAR.default; # RakuБез явного типового значення ним є тип контейнера. Для нетипізованого
контейнера це Any, незалежно від того, яке значення він
зараз містить:
my $language = 'Raku';
say $language.VAR.default; # (Any)Для типізованого контейнера це тип обмеження:
my Str $language;
say $language.VAR.default; # (Str)name
Метод name повертає ім’я контейнера разом із
сигілом:
my $language;
say $language.VAR.name; # $languageСтежте за тим, щоб не плутати ^name (тип) і
name (власне ім’я змінної).
Навігація курсом
← Тест —
WHAT та ^name | WHO та
HOW →
💪 Або перейдіть одразу до вправ цього
розділу.