メソッド定義のデフォルト式はどう実現するのか?
Rubyではメソッドの定義で,仮引数のデフォルト値を与える式も定義することができる.
# この場合はcとdがデフォルト値が与えられた仮引数という def foo(a, b, c = [], d = {})ことになる [a, b, c, d] end foo(0, 1, 2, 3) => [0, 1, 2, 3] foo(0, 1, 2) => [0, 1, 2, {}] foo(0, 1) => [0, 1, [], {}]
こんな感じ.
で,Cに対するAPIとして,このデフォルト値を実現する方法が提供されているか…
なのだが,素直に可変長引数メソッドとして定義してやって,引数の長さを見て…という感じでやるしか無いのかな…
可変長引数のメソッドとして定義するのならば,例えば:
VALUE foo(int argc, VALUE * argv, VALUE self) { /* … */ }
と定義された関数に渡されるargcは,Ruby側からどのように定義されているのかを確認する必要がある.