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, <[email protected]> <[email protected]>
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.
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel