2 つのスロット A と B を持つクラス "myClass" を作成したいとします。
今、A と B が同じ長さであることを保証する validObject 関数が必要です
same_length <- function(object){
if(length(object@A)!=length(object@B)) {
"vectors are not the same length"
} else TRUE
}
setClass("myClass", representation(A="numeric", B="numeric"),
validity=same_length)
初期化時にクラスが有効であることを保証する関数をどこかで見ました。
setMethod("initialize", "myClass", function(.Object, ...){
value <- callNextMethod()
validObject(value)
value
})
試してみるとエラーが送信されます
newObj <- new("myClass", A=c(1,2,3), B=c(1,2))
でももしそうなら
newObj <- new("myClass")
newObj@A <- c(1,2,3)
newObj@B <- c(1,2)
エラーはスローされません。新しいスロット割り当てが検証されないとすぐにエラーをスローするにはどうすればよいですか?