Курс Raku / Розширені / Порядок виконання / Префікси інструкцій 🆕

sink та quietly

Ще два префікси мають справу з виконанням коду заради його ефектів, а не значення.

Префікс sink обчислює щось у контексті стоку — суто заради побічних ефектів, відкидаючи результат. Він корисний із лінивою операцією, яку ви хочете змусити виконатися:

sink (1..3).map({ print "$_ " });
print "\n"; # 1 2 3

map тут виконується лише заради того друку, який він робить; sink подбає, щоб він справді виконався, і викине отриманий список. Без такого примусу лінивий map, результат якого ніде не використано, міг би й не виконатися взагалі.

Префікс quietly виконує блок із приглушеними попередженнями. Код, який зазвичай вивів би попередження в потік помилок, залишається мовчазним:

my $value;
quietly {
    say $value + 1; # 1, без попередження "uninitialized value"
}

Додавання 1 до невизначеного $value зазвичай попереджає про використання неініціалізованого значення, але всередині quietly це попередження приховано. Використовуйте його, коли свідомо робите щось, що попереджає, і не хочете зайвого шуму, — але ощадливо, бо попередження зазвичай вказують на справжню помилку.

Практика

Виконайте 1 тест за змістом цієї теми.

Навігація курсом

Лінивість та жадібність   |   Тест — Префікси інструкцій


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