10

我没有使用 ruby​​ 1.8.7,最近我很惊讶:

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

是否准备好使用修复将哈希转换为 ruby​​ 1.8.7 的字符串,使其看起来像:

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

1 回答 1

19

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 ):

通过将哈希转换为 [ key, value ] 对数组,然后使用 Array#join 和默认分隔符将该数组转换为字符串,将 hsh 转换为字符串。

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

别名:检查

您可以在 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}"

猴子修补及之后:

1.8.7 :003 > class Hash; alias :to_s :inspect; end
 => nil 
1.8.7 :004 > {:k => 30}.to_s
 => "{:k=>30}" 
于 2013-02-19T12:23:30.073 回答