【问题标题】:Can't understand how ruby prints this hash无法理解 ruby​​ 如何打印此哈希
【发布时间】:2012-10-04 21:04:03
【问题描述】:

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

  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
    

它如何存储keysvalues?为什么它以不同的方式打印?我在这里错过了什么?

【问题讨论】:

    标签: ruby hash


    【解决方案1】:

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

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

    【讨论】:

    • 是的,它在 1.8 和 1.9 上的行为不同。查看区别here(点击运行查看结果)
    猜你喜欢
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多