Ruby Hash .keys和.values,可以安全地假设相同的顺序?

Fin*_*arr 27 ruby hash

初步测试IRB表明,Ruby的哈希回报.keys.values匹配顺序.假设是这种情况可以安全吗?

小智 27

是.根据Ruby Docs for Hash,"Hashes按照插入相应键的顺序枚举它们的值." 因此,如果以相同的方式创建哈希,则应始终获得相同的哈希顺序.

  • 请注意,这适用于1.9,但不一定适用于1.8及更早版本 (5认同)

And*_*ros 8

取决于您运行的是哪个Ruby版本.高达1.8,枚举不是按插入顺序排列的.从1.9开始,它将根据插入顺序枚举键和值,因此,只要您运行1.9,就可以安全地假设它.