【发布时间】:2013-06-25 21:59:38
【问题描述】:
我正在尝试设置 params 字段并在 Template 类中对其进行验证,因此我可以执行 TemplateClass$new(params) 并且它会自动验证,但出现错误:
Template <- setRefClass('Template',
fields = c(
"params"
),
methods = list(
initialize = function(params){
params <<- params
validate_params()
},
validate_params = function(){
"everything okay"
}
)
)
PointsTemplate <- setRefClass('PointsTemplate',
contains = "Template",
methods = list(
initialize = function(params){
callSuper(params)
}
)
)
Error in .Object$initialize(...) :
argument "params" is missing, with no default
编辑:我似乎已经通过将Template 类中的initialize 方法更改为initialize = function(params = NULL){} 来解决它。但我不明白为什么需要这样做。
另外,当类不包含任何超类时,我看到其他人使用callSuper()。这是什么原因?
【问题讨论】:
-
仅供参考,每个班级都有一个超级班级。如果未明确指定,则为基础“envRefClass”。
标签: r reference-class