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())
謝謝,湯米。這個答案證實了我所看到的,但我想知道爲什麼我們會看到這種行爲?它對我來說不明顯,爲什麼默認參數不傳遞? – SFun28
因爲它的設計方式:) ...否則,您可能無法檢查您的方法中是否缺少(rownames)。 ...現在你可以自由地擁有其他的默認值(儘管不好的想法)。 – Tommy
謝謝!我想這是它是什麼。我知道有不同的默認值是一個壞主意,它只是不直觀,我忽略了默認值。也許我需要深入研究泛型函數。看起來最直觀的是,當執行UseMethod(...)時,匹配方法(本例中爲Test.list)的參數匹配Test的參數。在這裏,我們說「匹配所有參數,除非參數有默認值,如果默認,忽略」。這種方式稍微複雜一點。 =) – SFun28