Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Enigo kaj eligo / Dosierteniloj / Exercises / Transdonu tenilon al funkcio
Solvo: Transdonu tenilon al funkcio
Jen ebla solvo de la tasko.
Kodo
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';🦋 Vi povas trovi la fontkodon en la dosiero pass-a-handle.raku.
Eligo
started
working
doneKomentoj
La tenilo redonita de
openestas nur valoro tenata en$fh, do ĝi povas esti transdonita allog-linekiel argumento same kiel ĉeno aŭ nombro. Ene de la subrutino,$fh.sayskribas tra tiu sama malfermita tenilo.Ĉar la tenilo restas malfermita tra ĉiuj tri vokoj, ĉiu
log-linealdonas alian linion al la sama dosiero.closeposte elŝovas ĉion, kajslurprelegas la tri liniojn.Jen kio faras tenilojn kunmeteblaj: funkcio povas akcepti tenilon kaj skribi al (aŭ legi el) ĝi sen zorgi, al kiu dosiero ĝi montras — la vokanto decidas tion, kiam ĝi malfermas la dosieron.