2013-02-19 69 views
7

我没有用Ruby 1.8.7工作,最近我感到惊讶的是:的Ruby 1.8.7转换哈希串

{:k => 30}.to_s #=> "k30" 

有没有准备好使用修复程序哈希转换为字符串红宝石1.8。 7,以使它看起来像:

{:k => 30}.to_s #=> "{:k=>30}" 

回答

15

hash.to_s确实已经改变,从1.8.71.9.3

1.8.7,(参考文献:http://ruby-doc.org/core-1.8.7/Hash.html#method-i-to_s):

由散列变换为[键,值]对的阵列,然后使用阵列#加入该数组转换为字符串转换HSH为字符串与默认分隔符。

1.9.3(参考文献:http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-to_s

别名:检查

你可以在1.8.7猴子补丁哈希类具有以下做本地一样的:

class Hash 
    alias :to_s :inspect 
end 

在猴子修补之前:

1.8.7 :001 > {:k => 30}.to_s 
=> "k30" 
1.8.7 :002 > {:k => 30}.inspect 
=> "{:k=>30}" 

猴修补后&:

1.8.7 :003 > class Hash; alias :to_s :inspect; end 
=> nil 
1.8.7 :004 > {:k => 30}.to_s 
=> "{:k=>30}" 
相关问题