2011-10-18 9 views

答えて

5

実際の引数だけがメソッドに渡されます。それぞれのS3メソッドは、独自の異なるデフォルト値を持つことができます(ただし、非常に悪い設計です)。

あなたはおそらくその後、最後にいくつかの追加のパラメータを総称関数と同じデフォルトと同じパラメータを持つように努力する、とすべきです。

# Bad design, but possible to have defaults be different... 
Test.list = function(object , rownames = TRUE , ...) 
{ 
    browser() 
    # rownames is TRUE! 
} 

Test(list()) 
+0

ありがとう、Tommy。この回答は、私が見ていることを確認していますが、なぜ私たちはこの行動を見ているのでしょうか?デフォルトパラメータが渡されない理由はわかりません。 – SFun28

+0

それはそのように設計されているから:) ...そうでなければあなたのメソッドで 'missing(rownames)'をチェックできなかったでしょう。 ...そして今は他のデフォルト値を持つことが自由です(しかし、悪い考えです)。 – Tommy

+0

ありがとう!私はそれが何であるかと思います。異なるデフォルト値を持つことは悪い考えであり、デフォルト値が無視されるという私には直感的ではないことを理解しています。おそらく、私はより包括的な機能を深く掘り下げる必要があります。 UseMethod(...)を実行すると、一致したメソッド(この場合はTest.list)のパラメータがTestのパラメータにマッチすることが最も直感的です。ここでは、「パラメータがデフォルト値を持っていた場合を除いてすべてのパラメータを一致させます。デフォルトの場合は無視してください」と言っています。ちょっとだけ複雑なことが言われています。 =) – SFun28

関連する問題