为什么不使用UseMethod调度默认值?

SFu*_*n28 6 r

试图理解为什么rownames = FALSE没有从Test传递给Test.list?

Test = function( object , rownames = FALSE , ... )
{
    UseMethod( "Test" )
}

Test.list = function( object , rownames , ... )
{
    browser()
    # rownames is missing!
}

Test( list() )
Run Code Online (Sandbox Code Playgroud)

Tom*_*mmy 5

只有实际参数传递给方法.每个S3方法都可以有自己不同的默认值(虽然这可能是一个非常糟糕的设计).

你要努力具有相同的参数具有相同的默认值的通用功能,然后可能还有一些额外的参数在最后.

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

Test( list() )
Run Code Online (Sandbox Code Playgroud)