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

given и when

Когда программа должна выбрать один из нескольких вариантов, цепочка проверок if и elsif может стать длинной и однообразной. В такой ситуации конструкция given/when часто оказывается нагляднее. Она похожа на оператор switch из других языков.

Блок given принимает значение и делает его топиком — специальной переменной $_. Каждый блок when затем сравнивается с этим топиком, и первый совпавший выполняется:

my $n = 2;

given $n {
    when 1 { say 'one' }
    when 2 { say 'two' }
    when 3 { say 'three' }
}

Эта программа печатает:

two

В отличие от switch в некоторых других языках, здесь нет «проваливания» (fall-through): как только when совпадает, его блок выполняется, и блок given завершается. Остальные блоки when не проверяются.

Блок default

Блок default выполняется, когда ни один блок when не совпал. Он играет ту же роль, что ветка else в операторе if:

my $n = 5;

given $n {
    when 1 { say 'one' }
    when 2 { say 'two' }
    default { say 'many' }
}

Поскольку $n не равно ни 1, ни 2, программа печатает:

many

Ещё в этом разделе

Практика

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

Упражнения

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

  1. Жизненный этап по возрасту
  2. Чётное, нечётное или ноль
  3. Сопоставление по типу

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

Тест — LEAVE   |   Сопоставление диапазонов, типов и условий