"Vitalie S." <vitosm...@rambler.ru> writes: > Dear Developers, > > In current implementation of validity method, objects are first > coerced to superclass (slots are striped). Thus, it is not possible > to write validity method which would perform some checks on children > slots. > > Say, I want to check if number of slots in a class is equal to "n": > > setClass("A", representation(a="numeric", n="integer"), > prototype=list(a=12, n=1L), > validity=function(object){ > if(length(slotNames(object))!=obj...@n+1) paste("Number > of slots must be ", obj...@n) > else TRUE > }) > > > setClass("B", representation(b="numeric"), contains="A", > prototype=list(a=12, b=14, n=2L)) > > > new("B", a=11, b=33) > Error in validObject(.Object) : > invalid class "B" object: Number of slots must be 2 > > Error, because an object of class "A" is passed to validObject with > one slot "b" removed and n=2. > > Is were a work around for this, or I am just doomed to write the same > validity method for each children class?
I think you're doomed, but checking the number of slots in an instance seems like a very unusual validity method -- isn't this the job of the methods package, not your implementation of particular classes? Martin > Many thanks, > Vitalie. -- Martin Morgan Computational Biology / Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: Arnold Building M1 B861 Phone: (206) 667-2793 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel