Ответ 1
Они очень разные.
Array
- Массив - упорядоченный список объектов.
- Доступ к массиву можно получить, указав его целую позицию в списке (с нулевой индексацией):
a[3]
ссылается на 4-й объект в массиве. - Нет ограничений на то, что значения могут быть: дублирующиеся значения разрешены в массивах.
- В массиве есть литеральная запись объекта:
[1, 'apple', String, 1, :banana]
(это создает и инициализирует новый массив). - Массивы встроены в базовую библиотеку ruby.
Set
- Набор представляет собой неупорядоченный пул уникальных объектов.
- Поскольку он неупорядочен, нет целочисленного индекса, который вы можете использовать для доступа к определенным элементам набора.
- Ограничение уникальности означает, что вы не можете иметь более одной копии значения в наборе.
- Для наборов нет литерала о литералах объектов, вы должны создать их через
Set.new
. -
Set
не является частью ядра, а является частью стандартной библиотеки и поэтому нуждается вrequire 'set'
.