Курс Raku / Розширені / Порядок виконання / Префікси інструкцій 🆕
sink та quietly
Ще два префікси мають справу з виконанням коду заради його ефектів, а не значення.
Префікс sink обчислює щось у контексті стоку —
суто заради побічних ефектів, відкидаючи результат. Він корисний із
лінивою операцією, яку ви хочете змусити виконатися:
sink (1..3).map({ print "$_ " });
print "\n"; # 1 2 3map тут виконується лише заради того друку, який він
робить; sink подбає, щоб він справді виконався, і викине
отриманий список. Без такого примусу лінивий map, результат
якого ніде не використано, міг би й не виконатися взагалі.
Префікс quietly виконує блок із приглушеними
попередженнями. Код, який зазвичай вивів би попередження в
потік помилок, залишається мовчазним:
my $value;
quietly {
say $value + 1; # 1, без попередження "uninitialized value"
}Додавання 1 до невизначеного $value
зазвичай попереджає про використання неініціалізованого значення, але
всередині quietly це попередження приховано. Використовуйте
його, коли свідомо робите щось, що попереджає, і не хочете зайвого шуму,
— але ощадливо, бо попередження зазвичай вказують на справжню
помилку.
Практика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Лінивість та жадібність | Тест — Префікси інструкцій →
💪 Або перейдіть одразу до вправ цього
розділу.