stelle ich einen kurzen Code eine S4-Klasse myclass
gewährleisten und dafür zu schaffen, dass Objekte erstellt werden, wenn sie einen Zustand von einem param
Parameter angegeben überprüfenS4 Klassenkonstruktors und Validierung
setClass("myclass", slot = c(x = "numeric"))
#constructor
ValidmyClass<- function(object, param = 1)
{
if([email protected] == param) return(TRUE)
else return("problem")
}
setValidity("myclass", ValidmyClass)
setMethod("initialize","myclass", function(.Object,...){
.Object <- callNextMethod()
validObject(.Object,...)
.Object
})
für die ich die folgende Fehlermeldung erhalten Error in substituteFunctionArgs(validity, "object", functionName = sprintf("validity method for class '%s'", : trying to change the argument list of for validity method for class 'myclass' with 2 arguments to have arguments (object)
Ich verstehe das Problem mit den Argumenten, aber ich kann keinen Weg finden, um dies zu lösen. Das Dokument über setValidity
erwähnt, dass die Argumentmethode "Validitätsmethode sein sollte; das heißt entweder NULL
oder eine Funktion eines Arguments (Objekts)". Daher von meinem Verständnis ausgeschlossen mehr als ein Argument.
Dennoch ist die Idee hinter diesem Beispiel, dass ich die Konstruktion eines Objekts basierend auf dem Wert eines externen gegebenen Parameters testen kann. Wenn mehr Bedingungen hinzugefügt werden sollten, würde ich mir genügend Flexibilität wünschen, so dass nur die Funktion ValidmyClass
aktualisiert werden muss, ohne dass notwendigerweise weitere Slots hinzugefügt werden müssen.