Курс языка программирования Raku / Продвинутый уровень / Порядок выполнения / Префиксы инструкций
sink и quietly
Ещё два префикса предназначены для выполнения кода ради его эффектов, а не значения.
Префикс sink вычисляет выражение в контексте
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 тест по содержанию этой темы.
Навигация по курсу
← Ленивость и немедленность | Тест — Префиксы инструкций →
💪 Или перейдите сразу к упражнениям этого
раздела.