Курс 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


💪 Або перейдіть одразу до вправ цього розділу.