新井です。 In message "[ruby-list:31873] Re: 先祖がえり" on 15 Oct 2001 19:29:06 +0900, Minero Aoki <aamine / mx.edit.ne.jp> wrote: > あおきです。 > > 新井です。 > > class Bar < Array > > end > > p Bar.new.push(1,2,3)[0,0].type # => Array > > > > となるのは、まだバグなんじゃないかなっと思うのですが。。。 > > このへんは RubyGarden にいくつか報告が出ていて、まつもとさんの > コメントも既に付いてるので見てみてください。たとえば RCR38 とか。 > そのコメントを簡単にまとめると > 「レシーバのクラスを返すべきものも確かにあるが、そうでないものも > ある。たとえば binary method (+ - * など?)は常に String を返すべき」 > だそうです。 見てみました。文字列を生成するメソッドと、self を加工するメ ソッドがあるというわけですね。それはいいのですが、同じメソッ ドが引数によって違う挙動を示すのは混乱を招くだけだと思うので す。 class Foo < String end p Foo.new("foo")[0,0].type # => String p Foo.new("foo")[0,1].type # => Foo class Bar < Array end p Bar.new.push(1,2,3)[0,0].type # => Array p Bar.new.push(1,2,3)[0,1].type # => Bar -- 新井康司 (Koji Arai)