1

我在生产服务器上使用 ruby​​ 1.8.7,我的哈希在分配给变量时会自动排序。在本地机器上它工作正常。

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

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

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

>> a

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

有什么想法吗?如何避免对哈希进行排序?

谢谢

4

2 回答 2

5

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

于 2013-09-30T10:47:00.720 回答
0

Hash在 1.8.7 中没有排序,这意味着您不能依赖键值对的顺序。您看到它们按字母数字排序是巧合。

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

于 2013-09-30T11:40:41.563 回答