2013-02-19 100 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}"