3

フィールドを設定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

EDIT:クラスのinitializeメソッドをに変更することで解決したようです。しかし、なぜこれが必要なのかわかりません。Templateinitialize = function(params = NULL){}

callSuper()また、クラスにスーパークラスが含まれていない場合に他の人が使用するのを見てきました。これの理由は何ですか?

4

1 に答える 1