根据ruby-doc:“哈希按照插入相应键的顺序枚举它们的值。”
这是否意味着哈希确实像数组一样排序,这样我可以指望my_hash.keys和my_hash.values以及my_hash.to_a的索引始终排队?
例如,这是一个好主意还是坏主意?
my_hash = {"a"=>"alpha", "b"=>"beta", "c"=>"gamma"}
some_letters.each { |letter|
if my_hash.has_key? letter then
imp_index = my_hash.keys.find_index
table.row[r].col[imp_index].value = my_hash.values[imp_index]
end
}
所以......我可以将my_hash.keys中项目的隐式索引视为显式属性吗?
编辑:也可以通过在循环之前缓存.keys和.values数组来保存任何时间吗?
答案 0 :(得分:1)
哈希按照插入相应键的顺序枚举其值
仅限Ruby 1.9。在以前的版本中,哈希是无序的。
这是否意味着我可以指望my_hash.keys和my_hash.values以及my_hash.to_a的索引始终排队?
是的,只要在同一个未修改的哈希迭代中以相同的顺序迭代两次。 (即使散列是无序的。)