Курс языка программирования 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


💪 Или перейдите сразу к упражнениям этого раздела.