Ruby 为什么我的散列打印为字符串?

Ruby 为什么我的散列打印为字符串?,ruby,Ruby,它非常复杂,但我不知道配置什么或在哪里配置。我正在尝试打印一个简单的哈希值,如下所示: #!/usr/bin/ruby names = Hash.new names[1] = "Jane" names[2] = "Thomas" puts names 我希望输出是 {1=>"Jane", 2=>"Thomas"} 当我 1Jane2Thomas 有什么想法吗?你应该使用inspect puts names.inspect #=> {1=>"Jane", 2=&g

它非常复杂,但我不知道配置什么或在哪里配置。我正在尝试打印一个简单的哈希值,如下所示:

#!/usr/bin/ruby

names = Hash.new
names[1] = "Jane"
names[2] = "Thomas"

puts names
我希望输出是

{1=>"Jane", 2=>"Thomas"}
当我

1Jane2Thomas

有什么想法吗?

你应该使用inspect

puts names.inspect
#=> {1=>"Jane", 2=>"Thomas"}
该方法将调用到其参数上的,并打印结果。然而,p方法调用其参数的检查,并打印结果:

{1=>"Jane", 2=>"Thomas"}.to_s
#=> '1Jane2Thomas'

{1=>"Jane", 2=>"Thomas"}.inspect
#=> '{1=>"Jane", 2=>"Thomas"}'
因此,要得到一个好的散列打印输出,可以使用

puts {1=>"Jane", 2=>"Thomas"}.inspect


看起来您正在使用Ruby 1.8。在Ruby1.9中,您确实获得了预期的输出。Oldergod的答案在1.8中解决了您的问题。瞧,我的ruby版本是1.8.7。是的,答案确实很好。
p {1=>"Jane", 2=>"Thomas"}