私はRuby 1.8.7で作業していませんでしたが、最近驚いたのは次のとおりです。
{:k => 30}.to_s #=> "k30"
Ruby 1.8.7のハッシュを文字列に変換して次のようにするための修正を使用する準備はできていますか?
{:k => 30}.to_s #=> "{:k=>30}"
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}"