Corso di Raku / Oggetti, input/output ed eccezioni / Input e output / Handle di file / Exercises / Passate un handle a una funzione
Soluzione: Passate un handle a una funzione
Ecco una possibile soluzione del compito.
Codice
sub log-line($fh, $message) {
$fh.say($message);
}
my $fh = open 'log.txt', :w;
log-line($fh, 'started');
log-line($fh, 'working');
log-line($fh, 'done');
$fh.close;
print slurp 'log.txt';🦋 Trova il programma nel file pass-a-handle.raku.
Output
started
working
doneCommenti
L’handle restituito da
openè solo un valore contenuto in$fh, quindi può essere passato alog-linecome argomento, come una stringa o un numero qualunque. Dentro la subroutine,$fh.sayscrive attraverso quello stesso handle aperto.Poiché l’handle resta aperto per tutte e tre le chiamate, ogni
log-lineaggiunge un’altra riga allo stesso file.closescarica poi tutto eslurprilegge le tre righe.È questo che rende componibili gli handle: una funzione può accettare un handle e scriverci (o leggerci) senza curarsi di quale file punti — è il chiamante a deciderlo quando apre il file.
Navigazione del corso
← Passate un handle a una funzione | Quiz — Leggere le righe →