Требуется, чтобы new
вызывался без аргументов, new("Foo")
, должен работать.Кроме того, вероятно, лучше, чтобы ваш метод инициализации принимал ...
, callNextMethod
и имел аргументы после ...
(поскольку документально подтверждено, что initialize
использует безымянные аргументы для инициализации содержащихсяклассы).Поэтому
setMethod(initialize, "Foo", function(.Object, ..., a=integer(), b=integer()) {
callNextMethod(.Object, ..., model=data.frame(a, b))
})
Обычно каждый хочет изолировать пользователя от вызова new и вместо этого будет использовать конструктор Foo
.Обычно конструктор выполняет любое приведенное вами принуждение вместо этого в методе initialize, поэтому метод initialize просто не указан.
Foo <- function(a=integer(), b=integer(), ...) {
model <- data.frame(a, b)
new("Foo", model=model, ...)
}