From: Masato KIYAMA Date: 2001-04-18T03:42:25+09:00 Subject: [ruby-dev:12994] 仕様の確認 木山です. スクリプトの挙動で,わからないところがありますので 質問させてください. 以下のようなスクリプトを実行すると 以下のような結果が得られます. ------------------------- class Foo class Bar def initialize(a=nil) end def hoge print "hoge\n" end end def pri Bar.new.hoge Bar.new(2).hoge end end a = Foo.new a.pri ------------------------- 結果: hoge hoge しかし,以下のようなスクリプトだとエラーがでます. ------------------------- class Foo class Array def hoge print "hoge\n" end end def pri Array.new(2, 3) #ここを(a)とする end end a = Foo.new a.pri ------------------------- 結果:in `initialize': wrong # of arguments(2 for 0) (ArgumentError) さらに,(a)の部分が[3, 3].hogeだと,以下のようなエラーがでます. 結果:in `pri': undefined method `hoge' for [3, 3]:Array (NameError) しかし,(a)の部分がArray.new.hogeだと,以下のような結果になります. 結果: hoge 意図してこのような結果になっているのでしょうか?