Курс языка программирования Raku / Основы / Больше о типах / Ассоциативные типы данных / Exercises / Уже видели?
Решение: Уже видели?
Эта задача является классическим примером использования хеша для
отслеживания элементов. Перед циклом создается хеш %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}.
Навигация по курсу
← Уже видели? | Коды стран →