Курс Raku / Основи / Більше про типи / Асоціативні типи даних / Вправи / Бачив раніше?
Розв’язання: Бачив раніше?
Це завдання є класичним прикладом використання хешу для відстеження
елементів. Перед циклом створюється хеш %seen. Всередині
циклу введене слово $word слугує ключем хешу.
Код
Ось рішення:
my %seen;
loop {
my $word = prompt 'Word: ';
if %seen{$word} {
say %seen{$word} == 1 ?? 'Seen!' !! say "Seen %seen{$word} times!";
}
%seen{$word}++;
}🦋 Знайдіть програму у файлі seen-before.raku.
Вивід
$ 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Коментар
Конструкція %seen{$word}++ не тільки збільшує значення,
але й створює його, якщо воно ще не існувало. Процес створення
називається автовівіфікація. Зверніть увагу, що це не
відбувається, коли ви лише читаєте значення, як у умові:
if %seen{$word}.
Навігація курсом
← Бачив раніше? | Коди країн →