1

我是红宝石的新手,正在尝试一些小东西。所以这就是我所做的。

  1. 我使用了 irb 并在其中创建了一个简单的哈希sampleHash = {"One" => 1, "Two" => 2, "Three" => 3},但是当它存储它时(它会在您按下回车键后显示您的),这就是我得到=> {"One"=>1, "Three"=>3, "Two"=>2}的。同样,当我像这样打印出来时:sampleHash.each do|count, num| print "#{count}: #{num} \n" end我得到这个作为输出:

    One: 1 
    Three: 3 
    Two: 2 
    
  2. 现在,我用编辑器试了一下,这是我写的:

    hashExample = {"One" => 1,
                   "Two" => 2,
                   "Three" => 3 }
    hashExample.each do|count, num|
      print "#{count}: #{num} \n"
    end
    

    我得到这个作为输出:

    Three: 3 
    Two: 2 
    One: 1
    

它如何存储keysand values?为什么它以不同的方式打印?我在这里想念什么?

4

1 回答 1

3

在 Ruby 1.9 之前,哈希是无序的。也就是说,将键插入散列的顺序与迭代散列时它们出现的顺序无关。

除了升级到 Ruby 1.9 之外,没有办法使用内置哈希来解决这个问题。如果您需要一个保持其键顺序的哈希,您可以使用ActiveSupport::OrderedHash.

于 2012-10-04T21:05:56.907 回答