Corso di Raku / Avanzato / Controllo di flusso / Prefissi di istruzione
sink e quietly
Altri due prefissi riguardano l’esecuzione di codice per i suoi effetti piuttosto che per il suo valore.
Il prefisso sink valuta qualcosa in contesto
sink — esclusivamente per i suoi effetti collaterali, scartando il
risultato. È utile con un’operazione lazy che volete forzare ad
eseguire:
sink (1..3).map({ print "$_ " });
print "\n"; # 1 2 3Il map qui viene eseguito solo per la stampa che
produce; sink si assicura che venga effettivamente eseguito
e scarta la lista risultante. Senza forzarlo, un map lazy
il cui risultato non viene mai usato potrebbe non essere eseguito
affatto.
Il prefisso quietly esegue un blocco con i suoi
avvisi soppressi. Il codice che normalmente stamperebbe
un avviso sul flusso di errore rimane silenzioso:
my $value;
quietly {
say $value + 1; # 1, with no "uninitialized value" warning
}Sommare 1 a un $value non definito
normalmente genera un avviso sull’uso di un valore non inizializzato, ma
all’interno di quietly quell’avviso viene nascosto. Usatelo
quando fate consapevolmente qualcosa che genera avvisi e non volete il
disturbo — ma con parsimonia, poiché gli avvisi di solito indicano un
errore reale.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Laziness e eagerness | Quiz — Prefissi di istruzione →
💪 Oppure vai direttamente agli esercizi di questa
sezione.