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

💪 Landcodes

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: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська