Примечание: Ruby> = 1.9.2 имеет хеш, сохраняющий порядок: ключи порядка вставляются в порядке их перечисления. Нижеследующее относится к более старым версиям или к обратно совместимому коду.
Нет понятия отсортированного хэша. Так что нет, то, что вы делаете, не правильно.
Если вы хотите, чтобы он был отсортирован для отображения, верните строку:
"{" + h.sort.map{|k,v| "#{k.inspect}=>#{v.inspect}"}.join(", ") + "}"
или, если вы хотите, чтобы ключи были в порядке:
h.keys.sort
или, если вы хотите получить доступ к элементам по порядку:
h.sort.map do |key,value|
# keys will arrive in order to this block, with their associated value.
end
но в целом нет смысла говорить о отсортированном хэше. Из документов «Порядок, в котором вы пересекаете хеш по ключу или значению, может показаться произвольным и обычно не будет в порядке вставки». Поэтому вставка ключей в определенном порядке в хэш не поможет.