我在生产服务器上使用ruby 1.8.7,并且在将其分配给变量时自动对哈希进行排序。在本地机器上工作正常。
这是从我的生产控制台获取的输出
>> a = {"b" => "a", "a" => "c"}
=> {"a"=>"c", "b"=>"a"}
>> a
=> {"a"=>"c", "b"=>"a"}
>>
有任何想法吗?如何避免哈希排序?
由于
答案 0 :(得分:5)
你不应该/不能。如果您的脚本依赖于某些特定的排序,那么您很可能希望使用键/值对列表。在1.8中使用散列时,规范中未定义顺序。使用1.9时,它被定义为按插入顺序枚举。
答案 1 :(得分:0)
Hash
未被排序,这意味着您不能依赖键值对的顺序。你看到他们按字母数字排序是巧合。
如果您需要知道键/值对的顺序,可以使用ActiveSupport::OrderedHash
(或升级到Ruby 1.9+并使用内置Hash
)。