From: from_kyushu Date: 2010-02-18T03:36:33+09:00 Subject: [ruby-list:46864] Re: []= メソッドの第一引数を省略したい 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] -------------------- from_kyushu