Курс Raku / Розширені /
Порядок виконання / given та
when
Зіставлення діапазонів, типів та умов
Блок when не лише порівнює на рівність. Він виконує
розумне зіставлення між топіком і значенням, яке ви йому дали,
тож зіставлятися можна з діапазонами, типами й умовами, а не тільки з
окремими значеннями.
Діапазони
Діапазон збігається, коли топік потрапляє всередину нього. Це робить
given/when природним вибором для групування
чисел у смуги:
my $score = 75;
given $score {
when 90..100 { say 'A' }
when 80..89 { say 'B' }
when 70..79 { say 'C' }
default { say 'F' }
}Значення 75 потрапляє в діапазон 70..79,
тож програма виводить:
CТипи
Тип збігається, коли топік належить до цього типу. Це дозволяє розгалужуватися за тим, яке значення ви маєте:
my $value = 'Raku';
given $value {
when Int { say 'an integer' }
when Str { say 'a string' }
}Оскільки $value містить рядок, програма виводить:
a stringУмови
Можна також скористатися порівнянням безпосередньо. Усередині
when топік доступний як $_, тож умова на
кшталт $_ < 0 збігається, коли вона істинна:
my $n = -7;
given $n {
when $_ < 0 { say 'negative' }
when 0 { say 'zero' }
default { say 'positive' }
}Тут збігається перший when, і програма виводить:
negativeПрактика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← given та
when | Тест —
when →
💪 Або перейдіть одразу до вправ цього розділу.