Курс 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 у деяких інших мовах, тут немає провалювання: щойно якийсь 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   |   Зіставлення діапазонів, типів та умов