我試圖設置params
領域和模板類驗證它,所以我可以做TemplateClass$new(params)
,它會自動驗證,但我得到一個錯誤:如何使用引用類在R中的父類中設置字段?
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()
時,類不包含任何超類。這是什麼原因?
FYI每個類都有一個超類。如果沒有明確指定它是基礎「envRefClass」。 – hadley