我之前没有使用过 Ruby 1.8.7,最近我感到惊讶的是:
{:k => 30}.to_s #=> "k30"
有没有现成的解决方案可以将Ruby 1.8.7中的哈希转换为字符串,使其看起来像:
{:k => 30}.to_s #=> "{:k=>30}"
我之前没有使用过 Ruby 1.8.7,最近我感到惊讶的是:
{:k => 30}.to_s #=> "k30"
有没有现成的解决方案可以将Ruby 1.8.7中的哈希转换为字符串,使其看起来像:
{:k => 30}.to_s #=> "{:k=>30}"
hash.to_s
在Ruby版本从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类进行monkey-patch以在本地执行相同操作,方法如下:
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}"