Bill, I suspect you have a typo there [class(x) instead of class(z)] which is why it doesn't work. Without the typo it does:
> tstFn <- local({ + print.tst <- function(x, ...) cat("found it!") + + function(x) print(x) + }) > > z <- "The cat sat on the mat." > class(z) <- "tst" > > tstFn(z) found it! Cheers, Simon On May 17, 2011, at 7:32 PM, <bill.venab...@csiro.au> <bill.venab...@csiro.au> wrote: > I was surprised to see that S3 methods are not found if they only reside in > the enclosing environment. E.g.: > >> tstFn <- local({ > + print.tst <- function(x, ...) cat("found it!") > + > + function(x) print(x) > + }) >> >> z <- "The cat sat on the mat." >> class(x) <- "tst" >> >> tstFn(z) > [1] "The cat sat on the mat." >> > > So the answer to the question posed in the subject line is apparently "no". > Perhaps this is well known and fully documented somewhere, but if so it has > eluded me. Is there some reason for this? > > I'm not sure if this is a bug, a feature, or a proposal for development, but > I would welcome people's views on this curious little issue. > > Bill Venables. > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel