2012-08-08 73 views
5

这非常奇怪,但我不知道要配置什么或在哪里配置。我想打印如下一个简单的哈希值:为什么我的哈希按字符串打印?

#!/usr/bin/ruby 

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

puts names 

我希望可以将输出为

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

,而我得到

1Jane2Thomas 

任何想法?

+2

似乎你正在使用Ruby 1.8。在Ruby 1.9中,你可以获得你期望的输出。 Oldergod的答案在1.8中解决了你的问题。 – Mischa 2012-08-08 09:27:42

+0

瞧,我的红宝石版本是1.8.7。是的,的确,答案正常。 – PCoder 2012-08-08 09:33:45

回答

4

您应该使用检查。

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

或简单的'p名称' – tokland 2012-08-08 10:51:46

3

提出方法调用to_s上它的参数(一个或多个)并输出结果。然而,p方法调用在它的参数(一个或多个)检查并输出结果:

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

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

所以,有一个很好的哈希打印,既可以使用

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

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