String#to_sとHash#to_hashの挙動
% irb irb(main):001:0> class MyString<String;end => nil irb(main):002:0> s=MyString.new("abc") => "abc" irb(main):003:0> s.to_s.class => String
String#to_sはStringが返ります。
irb(main):004:0> class MyHash<Hash;end => nil irb(main):005:0> h=MyHash.new() => {} irb(main):006:0> h.to_hash.class => MyHash
Hash#to_hashはselfが返ります。
このように、継承すると挙動が変わって困る場合があります。 特に、継承したHashからHashを作る方法が わからなくて私は困ったのですが、
irb(main):015:0> Hash[h].class => Hash
これでなんとかいけます。
さて、to_sとかto_hashは何を返すべきなんでしょうね。 私はto_sなんだからString、to_hashなんだからHashを返すべきだと思うんですけどね。