from_kyushuと申します。 On 2010/02/18, at 1:21, Yuya Takeyama wrote: > 引数にデフォルト値を与えればいいのかと思い、以下のような変更を行いましたが、 > これもうまくいきませんでした。 > > def []=(key = nil, val) > > これは Syntax Error となりました。 > 引数が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] --------------------