5
Tratando de entender por qué rownames = FALSO no se transmite de prueba a Test.list?valores predeterminados no se expidan con UseMethod?
Test = function(object , rownames = FALSE , ...)
{
UseMethod("Test")
}
Test.list = function(object , rownames , ...)
{
browser()
# rownames is missing!
}
Test(list())
Gracias, Tommy. Esta respuesta confirma lo que estoy viendo, pero me pregunto por qué vemos este comportamiento. No es obvio para mí por qué los parámetros predeterminados no se transmiten? – SFun28
Debido a que está diseñado de esa manera :) ... y de lo contrario es probable que no podía comprobar si hay faltantes ('' rownames) en su método. ... y ahora eres libre de tener otros valores predeterminados (sin embargo, mala idea). – Tommy
gracias! Supongo que es lo que es. Entiendo que tener diferentes valores predeterminados es una mala idea, simplemente no es intuitivo para mí que los valores predeterminados se ignoran. Quizás necesito profundizar más en la función genérica. Parece más intuitiva que cuando se ejecuta UseMethod (...), los parámetros del método combinado (Test.list en este caso) se emparejan con los parámetros de prueba. Aquí estamos diciendo "coincide con todos los parámetros excepto cuando el parámetro tiene un valor predeterminado. Si incumplido, ignorar". Es un poco más complicado dicho de esa manera. =) – SFun28