Dear all, Maybe, I am doing something wrong, but using R-2.5.0 on my Intel-Mac, I have problems using function callNextMethod() in method initialize.
I am loading the following code as file "testS4.R": setClass("baseClass", representation(myname = "character", mydir = "character", "VIRTUAL"), prototype(myname = "", mydir = "") )#baseClass setClass("derivedClass", representation(mytitle = "character"), contains=c("baseClass"), prototype(mytitle = "") )#derivedClass setMethod("initialize", "baseClass", function(.Object, ...) { print("---initialize:baseClass---") # .Object <- callNextMethod(); if ([EMAIL PROTECTED] == "") { [EMAIL PROTECTED] <- as.character(getwd()); }#if print(paste("mydir = ", [EMAIL PROTECTED])) .Object <- callNextMethod(); .Object; } )#initialize setValidity("baseClass", function(object) { print("---setValidity:baseClass---") strg <- [EMAIL PROTECTED]; if (!(is(strg, "character") && nchar(strg) > 0)) { warning(paste(sQuote("myname"), "is missing")); }#if print(paste("myname = ",[EMAIL PROTECTED])) strg <- [EMAIL PROTECTED]; if (!(is(strg, "character") && file.exists(strg))) { warning(paste(sQuote("mydir"), "is not a system directory")); }#if if (substr(strg, nchar(strg), nchar(strg)) == "/") { [EMAIL PROTECTED] <- substr(strg, 0, nchar(strg)-1); }#if print(paste("mydir = ",[EMAIL PROTECTED])) } )#setValidity setMethod("initialize", "derivedClass", function(.Object, ...) { print("---initialize:derivedClass---") # .Object <- callNextMethod(); if ([EMAIL PROTECTED] == "") { [EMAIL PROTECTED] = "MyTitle"; }#if print(paste("mytitle = ",[EMAIL PROTECTED])) # .Object <- callNextMethod(); .Object; } )#initialize setValidity("derivedClass", function(object) { print("---setValidity:derivedClass---") strg <- [EMAIL PROTECTED]; if (!(is(strg, "character") && nchar(strg) > 0)) { warning(paste(sQuote("mytitle"), "is missing")); }#if print(paste("mytitle = ",[EMAIL PROTECTED])) } )#setValidity This is the output of an R session: > library(methods) > source("testS4.R") > tmp<-new("derivedClass") [1] "---initialize:derivedClass---" [1] "mytitle = MyTitle" [1] "---initialize:baseClass---" [1] "mydir = /Volumes/CoreData/CRAN/Workspaces/tests" > > tmp<-new("derivedClass",myname="testname",mytitle="testitle") [1] "---initialize:derivedClass---" [1] "mytitle = MyTitle" [1] "---initialize:baseClass---" [1] "mydir = /Volumes/CoreData/CRAN/Workspaces/tests" [1] "---setValidity:baseClass---" [1] "myname = testname" [1] "mydir = /Volumes/CoreData/CRAN/Workspaces/tests" Error in validObject(.Object) : invalid class "derivedClass" object: mydir = /Volumes/CoreData/CRAN/Workspaces/tests > > tmp<-new("derivedClass",myname="testname",mydir="",mytitle="testitle") [1] "---initialize:derivedClass---" [1] "mytitle = MyTitle" [1] "---initialize:baseClass---" [1] "mydir = /Volumes/CoreData/CRAN/Workspaces/tests" [1] "---setValidity:baseClass---" [1] "myname = testname" [1] "mydir = " Error in validObject(.Object) : invalid class "derivedClass" object: mydir = In addition: Warning message: 'mydir' is not a system directory in: validityMethod(as(object, superClass)) > Can someone tell me why mydir gives an error although it is defined correctly? Thank you in advance Best regards Christian _._._._._._._._._._._._._._._._ C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a V.i.e.n.n.a A.u.s.t.r.i.a _._._._._._._._._._._._._._._._ ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel