Курс Раку / Основи / Асоціативні типи даних / Вправи / Бачив раніше?
Рішення: Бачив раніше?
Це завдання є класичним прикладом використання хешу для відстеження елементів. Перед циклом створюється хеш %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}
.
Наступна вправа
Навігація по курсу
← Позиційні типи даних / Індексація діапазонів | Створення та виклик функцій →
Ця сторінка автоматично перекладена за допомогою ChatGPT 4o. Оригінальний текст англійською мовою.
Переклади цієї сторінки: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська