Курс языка программирования Raku / Продвинутый уровень / Контейнеры

Интроспекция с помощью МОП

Интроспекция — это когда у значения или контейнера запрашивается информация о нём самом: его тип, его контейнер и внутреннее устройство. Вы уже использовали один инструмент интроспекции — .^name — для вывода типа значения.

Raku предлагает небольшое семейство таких инструментов, записываемых заглавными буквами: WHAT, VAR, WHO и HOW. Их иногда называют псевдо-методами, потому что компилятор придаёт им особое значение, а не обрабатывает как обычные методы. В этом разделе рассматривается каждый из них.

Для напоминания, вот .^name, показывающий, как тип нетипизированного контейнера меняется при сохранении различных значений:

my $value;
say $value.^name; # Any

$value = 42;
say $value.^name; # Int

$value = 'forty-two';
say $value.^name; # Str

Контейнер начинает как Any, а затем показывает тип хранимого в данный момент значения.

Темы этого раздела

Практика

Пройдите 1 тест по содержанию этого раздела.

Упражнения

В этом разделе 3 упражнения. Прежде чем приступать к практике, изучите все темы раздела.

  1. Описание переменной
  2. Что это такое
  3. Значение по умолчанию контейнера

Навигация по курсу

Решение: Переменная-тема   |   WHAT и ^name