from_kyushu さん、こんにちは。 ご返答ありがとうございます。 (2010年02月18日 03:36), from_kyushu wrote: > 引数が2つ以上あるメソッドで、1番目の引数だけにデフォルト値を設定することは出来ません。 > 2番目以降にもデフォルト値を設定するか、可変長引数を使う必要があったと思います。 > なのでこう書けば動きました。 > > -------------------- > class MyArray < Array > def []=(key,val=nil) > if val.nil? > self.push(key) > else > super(key,val) > end > end > end > > arr = MyArray.new > arr[] = 1 # => 1 > arr[] = 2 # => 2 > arr # => [1, 2] > -------------------- > > from_kyushu > なるほど!そういうことだったんですね。 オライリーの本で、確かにそういったことを読んだ覚えはありますが、 いざ書いてみると、自分の理解がまだまだなことを思い知らされますね・・・。 ですが、 > if val.nil? > self.push(key) > else ここの部分はちょっと不思議ですね。 てっきり key.nil? を見るべきだと思っていたので。 このような仕様にした意図が気になるところです。 軽い気持ちで質問したつもりが、思った以上に深かったようで、 これからの参考になりそうです。 どうもありがとうございました。 Yuya Takeyama