Хэш в рубине 2.5.1 :
Хэши перечисляют свои значения в порядке, в котором были вставлены соответствующие ключи.
Набор в рубине 2.5.1 :
Set реализует коллекцию неупорядоченных значений без дубликатов.
Я думал, что set был реализован как хэш в ruby. Тогда почему Set неупорядочен, а хеш гарантирован в порядке вставки?
UPDATE:
Я понимаю, что математически множества должны быть неупорядоченными.
Возникает важный вопрос, хотя класс Set
фактически находится в порядке вставки, он не задокументирован. Я думаю, что документация должна быть обновлена.
Даже в источнике Set#add
мы видим, что он на самом деле использует Hash
:
# File set.rb, line 348
def add(o)
@hash[o] = true
self
end
Примечание: Я не хочу вызывать обсуждение, но думаю, что важно, чтобы этот факт был где-то задокументирован. Если нет в официальных документах, по крайней мере, переполнение стека.