Курс языка программирования Raku / Продвинутый уровень / Подробнее о встроенных типах

Множества, мультимножества и смеси

Помимо массивов и хешей, Raku предлагает несколько специализированных контейнеров для коллекций значений. Простейший из них — Set — неупорядоченная коллекция уникальных значений, где каждое значение либо является элементом, либо нет, а дубликаты игнорируются.

Множество создаётся с помощью подпрограммы set. Повторяющиеся значения схлопываются в одно:

my $s = set(1, 2, 3, 2, 1);
say $s.elems; # 3

Хотя было передано пять чисел, множество содержит только три элемента, потому что 1 и 2 встречались более одного раза.

Главный вопрос, который можно задать множеству, — принадлежит ли ему значение. Оператор (читается как «является элементом») возвращает булево значение:

say 2set(1, 2, 3); # True
say 9set(1, 2, 3); # False

Если вы предпочитаете оставаться в рамках обычного ASCII, тот же оператор можно записать как (elem):

say 2 (elem) set(1, 2, 3); # True

В следующих разделах показано, как комбинировать множества, а также рассказывается о мультимножествах (bags) и смесях (mixes), которые являются близкими родственниками множества.

Темы этого раздела

Практика

Пройдите 1 тест по содержанию этого раздела.

Упражнения

В этом разделе 3 упражнения. Прежде чем приступать к практике, изучите все темы раздела.

  1. Подсчёт уникальных
  2. Общие элементы
  3. Подсчёт в мультимножестве

Навигация по курсу

Решение: День недели   |   Операции над множествами