Reputation: 626
I've defined two RCs. The first is VectorCharacterElements
. I've assigned a validity test to it.
VectorCharacterElements <- setRefClass(
"VectorCharacterElements",
fields = list(vec = "character", el1 = "character", el2 = "character")
)
ValidVectorCharacterElements <- function(object) {
if (length(object$vec) < 2) {
cat("Length of `vec` must be greater than or equal to two.")
cat("\n")
return(F)
}
return(T)
}
setValidity("VectorCharacterElements", ValidVectorCharacterElements)
I'm trying to define a second RC, VectorCharacterElementsDistance
. It uses VectorCharacterElements
as a field.
VectorCharacterElementsDistance <- setRefClass(
"VectorCharacterElementsDistance",
fields = list(vce = "VectorCharacterElements", d = "numeric")
)
However, I'm getting an error when I run the above code.
Length of
vec
must be greater than or equal to two. Error in validObject(.Object) : invalid class “VectorCharacterElements” object: FALSE
The error is from the validation method I defined for VectorCharacterElements
.
How can I keep validation for VectorCharacterElements
, and ensure vce
is of type VectorCharacterElements
in VectorCharacterElementsDistance
?
The error won't present itself if I use contains
.
VectorCharacterElementsDistance <- setRefClass(
"VectorCharacterElementsDistance",
contains = "VectorCharacterElements",
fields = list(d = "numeric")
)
But, I would like to avoid inheriting from VectorCharacterElements
.
Upvotes: 1
Views: 42