Почему значения по умолчанию не отправляются с UseMethod? - PullRequest
6 голосов
/ 18 октября 2011

Пытаетесь понять, почему имена строк = FALSE не передаются из Test в Test.list?

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

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

Test( list() )

1 Ответ

5 голосов
/ 18 октября 2011

Методу передаются только фактические аргументы. Каждый метод S3 может иметь свои собственные значения по умолчанию (хотя это был бы очень плохой дизайн).

Вы должны стремиться иметь те же параметры с теми же значениями по умолчанию , что и для универсальной функции, а затем, возможно, некоторые дополнительные параметры в конце .

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

Test( list() )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...