Kurso de Raku / Esencoj / Pli pri tipoj / Asociaj datentipoj / Exercises / Vidita antaŭe?

Solvo: Vidita antaŭe?

Ĉi tiu tasko estas klasika ekzemplo de uzado de haketo por spuri erojn. Antaŭ buklo, haketo %seen estas kreita. Ene de la buklo, la enirita $word servas kiel ŝlosilo de la haketo.

Kodo

Jen la solvo:

my %seen;
loop {
    my $word = prompt 'Word: ';
    if %seen{$word} {
        say %seen{$word} == 1 ?? 'Seen!' !! say "Seen %seen{$word} times!";
    }
    %seen{$word}++;
}

🦋 Trovu la programon en la dosiero seen-before.raku.

Eligo

$ raku exercises/associatives/seen-before.raku
Word: I
Word: never
Word: saw
Word: a
Word: saw
Seen!
Word: that
Word: saw
Seen 2 times!
True
Word: as
Word: that
Seen!
Word: saw
Seen 3 times!
True
Word: sawed
Word: ^C

Komento

La konstruo %seen{$word}++ ne nur pliigas la valoron sed ankaŭ kreas ĝin se ĝi ankoraŭ ne ekzistis. La procezo de kreo estas nomata aŭtovivigo. Rimarku, ke ĝi ne okazas kiam vi nur legas la valoron kiel en la kondiĉo: if %seen{$word}.

Kursa navigado

Vidita antaŭe?   |   Lando kodoj