Курс языка программирования Raku / Продвинутый уровень / Подробнее о встроенных типах
Множества, мультимножества и смеси
Помимо массивов и хешей, Raku предлагает несколько специализированных
контейнеров для коллекций значений. Простейший из них — Set
— неупорядоченная коллекция уникальных значений, где каждое
значение либо является элементом, либо нет, а дубликаты
игнорируются.
Множество создаётся с помощью подпрограммы set.
Повторяющиеся значения схлопываются в одно:
my $s = set(1, 2, 3, 2, 1);
say $s.elems; # 3Хотя было передано пять чисел, множество содержит только три
элемента, потому что 1 и 2 встречались более
одного раза.
Главный вопрос, который можно задать множеству, — принадлежит ли ему
значение. Оператор ∈ (читается как «является элементом»)
возвращает булево значение:
say 2 ∈ set(1, 2, 3); # True
say 9 ∈ set(1, 2, 3); # FalseЕсли вы предпочитаете оставаться в рамках обычного ASCII, тот же
оператор можно записать как (elem):
say 2 (elem) set(1, 2, 3); # TrueВ следующих разделах показано, как комбинировать множества, а также рассказывается о мультимножествах (bags) и смесях (mixes), которые являются близкими родственниками множества.
Темы этого раздела
Практика
Пройдите 1 тест по содержанию этого раздела.
Упражнения
В этом разделе 3 упражнения. Прежде чем приступать к практике, изучите все темы раздела.