web-dev-qa-db-ja.com

Ruby 1.8.7ハッシュを文字列に変換する

私はRuby 1.8.7で作業していませんでしたが、最近驚いたのは次のとおりです。

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

Ruby 1.8.7のハッシュを文字列に変換して次のようにするための修正を使用する準備はできていますか?

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

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

エイリアス:検査

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}" 
18
Prakash Murthy