Программирование на языке Ruby.

9.1.1. Простые операции над множествами.

Для объединения множеств служит метод union (синонимы | и +):

X = Set[1,2,3].

Y = Set[3,4,5].

А = x.union(y) # Set[1,2,3,4,5].

B = x | y      # То же самое.

С = x + y      # То же самое.

Пересечение множеств вычисляется методом intersection (синоним &):

X = Set[1,2,3].

Y = Set[3,4,5].

А = x.intersection(y) # Set[3].

B = x & y # То же самое.

Унарный минус обозначает разность множеств; мы обсуждали эту операцию в разделе 8.1.9.

Diff = Set[1,2,3] - Set[3,4,5] # Set[1,2].

Принадлежность элемента множеству проверяют методы member? или include?, как для массивов. Напомним, что порядок операндов противоположен принятому в математике.

Set[1,2,3].include?(2) # true.

Set[1,2,3].include?(4) # false.

Set[1,2,3].member?(4)  # false.

Чтобы проверить, является ли множество пустым, мы вызываем метод empty?, как и в случае с массивами. Метод clear очищать множество, то есть удаляет из него все элементы.

S = Set[1,2,3,4,5,6].

S.empty? # false.

S.clear.

S.empty? # true.

Можно проверить, является ли одно множество подмножеством, собственным подмножеством или надмножеством другого.

X = Set[3,4,5].

Y = Set[3,4].

X.subset?(y)        # false.

Y.subset?(x)        # true.

Y.proper_subset?(x) # true.

X.subset?(x)        # true.

X.proper_subset?(x) # false.

X.superset?(y)      # true.

Метод add (синоним <<) добавляет в множество один элемент и обычно возвращает его в качестве значения. Метод add? возвращает nil, если такой элемент уже присутствовал в множестве. Метод merge полезен, если надо добавить сразу несколько элементов. Все они, конечно, могут изменить состояние вызывающего объекта. Метод replace работает так же, как в случае со строкой или массивом.

Наконец, два множества можно сравнить на равенство интуитивно очевидным способом:

Set[3,4,5] == Set[5,4,3] # true.