Курс по Raku / Напреднали / Управление на потока / Префикси на инструкции 🆕

do и стойността на блок

Самостоятелният блок е оператор, а не израз, така че не можете просто да го присвоите на променлива. Префиксът do превръща блок в израз, чиято стойност е стойността на последния му оператор:

my $x = do {
    my $a = 3;
    $a + 4;
};

say $x; # 7

Вътре в блока можете да декларирате променливи, да изпълнявате няколко оператора и да изчислявате резултат; do връща каквото блокът даде като стойност. Това е удобно, когато за получаването на стойност е нужно повече от един израз.

do работи и пред оператори за управление на потока, като им позволява също да връщат стойност:

my $sign = do given 5 {
    when * > 0 { 'positive' }
    when * < 0 { 'negative' }
    default    { 'zero' }
};

say $sign; # positive

Тук do given превръща цялата конструкция given/when в израз, който дава positive. Същото работи с do if и do for. Накратко, do е начинът да използвате блок или управляваща конструкция на място, което очаква стойност.

Практика

Направете 1 тест върху съдържанието на тази тема.

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

Префикси на инструкции 🆕   |   Тест — do


💪 Или преминете направо към упражненията в този раздел.