Курс языка программирования 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 тест по содержанию этой темы.

Навигация по курсу

Ленивость и немедленность   |   Тест — Префиксы инструкций


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