Cursus Raku / Objecten, in- en uitvoer en excepties / Invoer en uitvoer / Bestandshandles / Exercises / Geef een handle door aan een functie
Oplossing: Geef een handle door aan een functie
Hier is een mogelijke oplossing voor de taak.
Code
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';🦋 Je kunt de broncode vinden in het bestand pass-a-handle.raku.
Uitvoer
started
working
doneOpmerkingen
De handle die
openteruggeeft is gewoon een waarde in$fh, dus hij kan net als elke string of elk getal als argument aanlog-linemeegegeven worden. Binnen de subroutine schrijft$fh.sayvia diezelfde open handle.Omdat de handle over alle drie de aanroepen open blijft, plakt elke
log-lineer nog een regel aan hetzelfde bestand bij.closeschrijft daarna alles weg, enslurpleest de drie regels terug.Dit is wat handles samenstelbaar maakt: een functie kan een handle aannemen en ernaar schrijven (of eruit lezen) zonder zich te bekommeren om welk bestand hij aanwijst — dat beslist de aanroeper wanneer hij het bestand opent.
Cursusnavigatie
← Geef een handle door aan een functie | Quiz — Regels lezen →