5
Rownames = FALSE neden Testten Sınama.listesine geçilmediğini anlamaya çalışıyorum?Varsayılan değerler neden UseMethod ile gönderilmiyor?
Test = function(object , rownames = FALSE , ...)
{
UseMethod("Test")
}
Test.list = function(object , rownames , ...)
{
browser()
# rownames is missing!
}
Test(list())
Teşekkürler, Tommy. Bu cevap, ne gördüğümü doğruluyor, ama bu davranışı neden gördüğümüzü merak ediyorum. Varsayılan parametrelerin neden aktarılmadığı bana açık değil mi? – SFun28
Bu şekilde tasarlandığından :) ... ve aksi takdirde muhtemelen yönteminizde "eksik" (rownames) 'i kontrol edemediniz. ... ve şimdi diğer varsayılan değerlere sahip olmakta özgürsünüz (kötü fikir olsa da). – Tommy
teşekkürler! Sanırım ne olduğu. Farklı varsayılan değerlere sahip olmanın kötü bir fikir olduğunu, benim için varsayılan değerlerin göz ardı edilmesinin sadece sezgisel olmadığını anlıyorum. Belki de genel işlevlere daha çok inmem gerekiyor. UseMethod (...) yürütüldüğünde, eşleşen yöntemin parametreleri (bu durumda Test.list) Test parametrelerine kadar eşleştirilir. Burada "parametre varsayılan bir değer olduğunda, tüm parametrelerle eşleşiriz. Varsayılan olarak, yoksay" dedik. Sadece biraz daha karmaşık bu şekilde ifade etti. =) – SFun28