5
なぜrownames = FALSEであるのか理解しようとすると、TestからTest.listに渡されません。UseMethodでデフォルト値がディスパッチされないのはなぜですか?
Test = function(object , rownames = FALSE , ...)
{
UseMethod("Test")
}
Test.list = function(object , rownames , ...)
{
browser()
# rownames is missing!
}
Test(list())
ありがとう、Tommy。この回答は、私が見ていることを確認していますが、なぜ私たちはこの行動を見ているのでしょうか?デフォルトパラメータが渡されない理由はわかりません。 – SFun28
それはそのように設計されているから:) ...そうでなければあなたのメソッドで 'missing(rownames)'をチェックできなかったでしょう。 ...そして今は他のデフォルト値を持つことが自由です(しかし、悪い考えです)。 – Tommy
ありがとう!私はそれが何であるかと思います。異なるデフォルト値を持つことは悪い考えであり、デフォルト値が無視されるという私には直感的ではないことを理解しています。おそらく、私はより包括的な機能を深く掘り下げる必要があります。 UseMethod(...)を実行すると、一致したメソッド(この場合はTest.list)のパラメータがTestのパラメータにマッチすることが最も直感的です。ここでは、「パラメータがデフォルト値を持っていた場合を除いてすべてのパラメータを一致させます。デフォルトの場合は無視してください」と言っています。ちょっとだけ複雑なことが言われています。 =) – SFun28