使用哈希索引

时间:2011-09-13 11:36:28

标签: ruby arrays hash

根据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数组来保存任何时间吗?

1 个答案:

答案 0 :(得分:1)

  

哈希按照插入相应键的顺序枚举其值

仅限Ruby 1.9。在以前的版本中,哈希是无序的。

  

这是否意味着我可以指望my_hash.keys和my_hash.values以及my_hash.to_a的索引始终排队?

是的,只要在同一个未修改的哈希迭代中以相同的顺序迭代两次。 (即使散列是无序的。)