5
Próbujesz zrozumieć, dlaczego rownames = FALSE nie jest przekazywane z Test na Test.list?Dlaczego wartości domyślne nie są wywoływane przy użyciu UseMethod?
Test = function(object , rownames = FALSE , ...)
{
UseMethod("Test")
}
Test.list = function(object , rownames , ...)
{
browser()
# rownames is missing!
}
Test(list())
Dzięki, Tommy. Ta odpowiedź potwierdza to, co widzę, ale zastanawiam się, dlaczego widzimy to zachowanie? Nie jest dla mnie oczywiste, dlaczego parametry domyślne nie są przekazywane? – SFun28
Ponieważ jest zaprojektowany w ten sposób :) ... a poza tym prawdopodobnie nie można sprawdzić "brakujących (rownames)" w swojej metodzie. ... a teraz możesz mieć inne domyślne wartości (zły pomysł). – Tommy
dzięki! Domyślam się, że tak właśnie jest. Rozumiem, że posiadanie różnych domyślnych wartości jest złym pomysłem, ale nie jest dla mnie intuicyjne, że wartości domyślne są ignorowane. Być może muszę zagłębić się w funkcję ogólną. Wydaje się najbardziej intuicyjne, że gdy wykonywany jest UseMethod (...), parametry dopasowanej metody (Test.list w tym przypadku) są dopasowane do parametrów Testu. Tutaj mówimy "dopasuj wszystkie parametry Z WYJĄTKIEM, gdy parametr ma domyślną wartość, jeśli domyślne, ignoruj". Jest to nieco bardziej skomplikowane w ten sposób. =) – SFun28