为什么我的哈希打印成字符串?

时间:2012-08-08 09:21:11

标签: ruby

这很奇怪,但我不知道配置什么或配置位置。我正在尝试打印一个简单的哈希值,如下所示:

#!/usr/bin/ruby

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

puts names

我希望输出为

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

我得到了

1Jane2Thomas

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

你应该使用inspect。

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

答案 1 :(得分:3)

方法调用 to_s 放在其参数上并打印结果。然而, p 方法在其参数上调用 inspect 并打印结果:

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

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

因此,要使用漂亮的Hash打印输出,请使用

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

p {1=>"Jane", 2=>"Thomas"}