我没有使用ruby 1.8.7,最近我很惊讶:
{:k => 30}.to_s #=> "k30"
是否已准备好使用fix将hash转换为字符串以用于ruby 1.8.7,使其看起来像:
{:k => 30}.to_s #=> "{:k=>30}"
答案 0 :(得分:18)
hash.to_s
确实已从1.8.7
更改为1.9.3
。
在1.8.7
,(参考:http://ruby-doc.org/core-1.8.7/Hash.html#method-i-to_s):
通过将哈希值转换为[key,value]对数组,然后使用Array#join将默认分隔符转换为字符串,将hsh转换为字符串。
在1.9.3
,(参考:http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-to_s)
别名:inspect
您可以在1.8.7中对Hash类进行猴子修补,以便在本地执行以下操作:
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}"
Monkey-patching&后:
1.8.7 :003 > class Hash; alias :to_s :inspect; end
=> nil
1.8.7 :004 > {:k => 30}.to_s
=> "{:k=>30}"