Курс по 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 тест върху съдържанието на тази тема.
Навигация в курса
← Мързеливост и нетърпеливост | Тест — Префикси на инструкции →
💪 Или преминете направо към упражненията в този
раздел.