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

Решение: Сопоставление по типу

Вот возможное решение задачи.

Код

my $value = 3.14;

given $value {
    when Int { say 'integer' }
    when Rat { say 'rational' }
    when Str { say 'string' }
}

🦋 Исходный код можно найти в файле match-by-type.raku.

Вывод

rational

Комментарии

  1. Когда значение для сопоставления является типом, умное сопоставление проверяет, принадлежит ли топик этому типу. 3.14 не является Int, поэтому первый when пропускается.

  2. Десятичный литерал вроде 3.14 в Raku является Rat (рациональным числом), поэтому второй when совпадает, и программа печатает rational.

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

Сопоставление по типу   |   gather и take