From: SASADA Koichi Date: 2005-12-10T04:12:11+09:00 Subject: [ruby-dev:27984] modified restarg with zsuper  ささだです。  引数無しの super (以降 zsuper)を呼び出すときのルールは、そのメソッド の引数の形をそのままコピーしたものと同様にする、という話だったと思いま す。つまり、 def m(a, b=1, *c) と定義されているとき、メソッド m 中で   super と書けば、   super(a, b, *c) と同様の意味であると思われます(オプション引数の代入は無視)。  しかし、 class C def m(a, b) end end class D < C def m(a, *b) b[0] ||= 2 # (1引数だったら、引数を追加する) super end end D.new.m(1, 2) # OK D.new.m(1) # wrong number of arguments (1 for 2) (ArgumentError) このようなプログラムでは引数の数が違う、とエラーになります(ruby 1.9.0 (2005-11-18) [i386-cygwin])。  これは、そのまま super を super(a, *b) として解釈していればエラーにな らないと思います。  この仕様はこういうものでしょうか。個人的には「単純に置き換えるだけ」と いうルールが簡単なので、エラーにならない挙動がいいと思います。 -- // SASADA Koichi at atdot dot net