默认情况下,Ruby Hash按ruby 1.8.7排序

时间:2013-09-30 10:42:39

标签: ruby hashmap

我在生产服务器上使用ruby 1.8.7,并且在将其分配给变量时自动对哈希进行排序。在本地机器上工作正常。

这是从我的生产控制台获取的输出

>> a = {"b" => "a", "a" => "c"}

=> {"a"=>"c", "b"=>"a"}

>> a

=> {"a"=>"c", "b"=>"a"}
>> 

有任何想法吗?如何避免哈希排序?

由于

2 个答案:

答案 0 :(得分:5)

你不应该/不能。如果您的脚本依赖于某些特定的排序,那么您很可能希望使用键/值对列表。在1.8中使用散列时,规范中未定义顺序。使用1.9时,它被定义为按插入顺序枚举。

答案 1 :(得分:0)

1.8.7中的

Hash未被排序,这意味着您不能依赖键值对的顺序。你看到他们按字母数字排序是巧合。

如果您需要知道键/值对的顺序,可以使用ActiveSupport::OrderedHash(或升级到Ruby 1.9+并使用内置Hash)。