Курс Раку / Основи / Асоціативні типи даних / Вправи / Бачив раніше?

Рішення: Бачив раніше?

Це завдання є класичним прикладом використання хешу для відстеження елементів. Перед циклом створюється хеш %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. Оригінальний текст англійською мовою.

Переклади цієї сторінки: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська