Курс по 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, with no "uninitialized value" warning
}

Събирането на 1 с неопределена $value нормално предупреждава за използване на неинициализирана стойност, но вътре в quietly това предупреждение е скрито. Използвайте го, когато съзнателно правите нещо, което предупреждава, и не искате шума — но пестеливо, тъй като предупрежденията обикновено сочат към истинска грешка.

Практика

Направете 1 тест върху съдържанието на тази тема.

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

Мързеливост и нетърпеливост   |   Тест — Префикси на инструкции


💪 Или преминете направо към упражненията в този раздел.