Cursus Raku / Essentiëlen / Associatieve datentypen / Oefeningen / Eerder gezien?
Oplossing: Eerder gezien?
Deze taak is een klassiek voorbeeld van het gebruik van een hash om items bij te houden. Voor een lus wordt een hash %seen
aangemaakt. Binnen de lus dient het ingevoerde $word
als sleutel van de hash.
Code
Hier is de oplossing:
my %seen;
loop {
my $word = prompt 'Woord: ';
if %seen{$word} {
say %seen{$word} == 1 ?? 'Gezien!' !! say "Gezien %seen{$word} keer!";
}
%seen{$word}++;
}
🦋 Vind het programma in het bestand seen-before.raku.
Uitvoer
$ raku exercises/associatives/seen-before.raku
Woord: Ik
Woord: nooit
Woord: zag
Woord: een
Woord: zag
Gezien!
Woord: dat
Woord: zag
Gezien 2 keer!
Waar
Woord: als
Woord: dat
Gezien!
Woord: zag
Gezien 3 keer!
Waar
Woord: zaagde
Woord: ^C
Opmerking
De constructie %seen{$word}++
verhoogt niet alleen de waarde, maar creëert deze ook als deze nog niet bestaat. Het proces van creëren wordt autovivificatie genoemd. Merk op dat dit niet gebeurt wanneer je de waarde alleen leest zoals in de voorwaarde: if %seen{$word}
.
Volgende oefening
Cursusnavigatie
← Positionele datentypen / Subscriptie van reeksen | Functies maken en aanroepen →
Deze pagina is automatisch vertaald met ChatGPT 4o. Originele Engelse tekst.
Vertalingen van deze pagina: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська