Курс по 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   |   Съпоставяне с диапазони, типове и условия