Raku kurss / Objekti, ievade/izvade un izņēmumi / Ievade un izvade / Failu deskriptori / Exercises / Nododiet deskriptoru funkcijai
Risinājums: Nododiet deskriptoru funkcijai
Šeit ir iespējams risinājums uzdevumam.
Kods
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';🦋 Atrodiet programmu failā pass-a-handle.raku.
Izvade
started
working
doneKomentāri
Turis, ko atgriež
open, ir vienkārši vērtība, kas glabājas$fh, tāpēc to var padotlog-linekā argumentu gluži tāpat kā jebkuru virkni vai skaitli. Apakšprogrammas iekšienē$fh.sayraksta caur to pašu atvērto turi.Tā kā turis paliek atvērts visus trīs izsaukumus, katrs
log-linepievieno tam pašam failam vēl vienu rindu.closetad visu izskalo, unslurpnolasa trīs rindas atpakaļ.Tieši tas padara turus komponējamus: funkcija var pieņemt turi un tajā rakstīt (vai no tā lasīt), nerūpējoties par to, uz kuru failu tas norāda, — to izlemj izsaucējs, kad failu atver.
Kursa navigācija
← Nododiet deskriptoru funkcijai | Viktorīna — Rindu lasīšana →