0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В работе над массивами есть особый набор операций, который пришёл к нам из математики - это операции над множествами. В Ruby для такого случая есть специальные операторы, близкие к их математическим эквивалентам.</p>
1
<p>В работе над массивами есть особый набор операций, который пришёл к нам из математики - это операции над множествами. В Ruby для такого случая есть специальные операторы, близкие к их математическим эквивалентам.</p>
2
<p>Представьте себе задачу поиска взаимных друзей пользователей. Для формирования такого списка на уровне кода, нужно сравнить два массива (мои друзья и друзья друга) и найти пересечение, то есть общих друзей. В данном случае массивы с друзьями - это множества, а операция поиска общих элементов - пересечение (intersection).</p>
2
<p>Представьте себе задачу поиска взаимных друзей пользователей. Для формирования такого списка на уровне кода, нужно сравнить два массива (мои друзья и друзья друга) и найти пересечение, то есть общих друзей. В данном случае массивы с друзьями - это множества, а операция поиска общих элементов - пересечение (intersection).</p>
3
<p>Пересечение на Ruby выглядит так:</p>
3
<p>Пересечение на Ruby выглядит так:</p>
4
<p>Такой оператор очень удобен своей естественностью. Сразу понятно, о чём идёт речь. Как и в большинстве других операторов в Ruby, мы имеем дело с вызовами методов:</p>
4
<p>Такой оператор очень удобен своей естественностью. Сразу понятно, о чём идёт речь. Как и в большинстве других операторов в Ruby, мы имеем дело с вызовами методов:</p>
5
<p>Подобная схема позволяет не только переопределять их поведение, но и комбинировать операторы между собой:</p>
5
<p>Подобная схема позволяет не только переопределять их поведение, но и комбинировать операторы между собой:</p>
6
<p>У множеств и массивов с точки зрения математики есть одно принципиальное отличие, о котором нужно помнить. Во множествах каждый элемент представлен ровно один раз (то есть все элементы - уникальны), в то время как в массивах такого ограничения не существует. Операции над множествами рассматривают массивы не как массивы, а именно как множества. Они удаляют дубли в результирующем массиве:</p>
6
<p>У множеств и массивов с точки зрения математики есть одно принципиальное отличие, о котором нужно помнить. Во множествах каждый элемент представлен ровно один раз (то есть все элементы - уникальны), в то время как в массивах такого ограничения не существует. Операции над множествами рассматривают массивы не как массивы, а именно как множества. Они удаляют дубли в результирующем массиве:</p>
7
<p><em>Объединение</em></p>
7
<p><em>Объединение</em></p>
8
<p>Множество, объединяющее в себе элементы исходных множеств.</p>
8
<p>Множество, объединяющее в себе элементы исходных множеств.</p>
9
<p><em>Дополнение</em></p>
9
<p><em>Дополнение</em></p>
10
<p>Множество, состоящее из элементов первого множества за исключением элементов, совпадающих со вторым множеством. Проще говоря, это разница между двумя множествами:</p>
10
<p>Множество, состоящее из элементов первого множества за исключением элементов, совпадающих со вторым множеством. Проще говоря, это разница между двумя множествами:</p>
11
11