My apologies...  how embarrassing.

Please resume your normal duties.  :-)

Bill. 

-----Original Message-----
From: Simon Urbanek [mailto:simon.urba...@r-project.org] 
Sent: Wednesday, 18 May 2011 10:36 AM
To: Venables, Bill (CMIS, Dutton Park)
Cc: r-devel@r-project.org
Subject: Re: [Rd] S3 method dispatch - can methods come from the enclosing 
environment?

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

Reply via email to