Ruby 1.8.7将哈希转换为字符串

时间:2013-02-19 12:10:07

标签: ruby ruby-1.8.7

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

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

是否已准备好使用fix将hash转换为字符串以用于ruby 1.8.7,使其看起来像:

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

1 个答案:

答案 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}"