Hi, 

Strange, there seems to be different behavior of "old style" classes and S4 
classes.

This worked just like you expected (but it's not the same thing, no S4 
classes)

f2=function(x,...) UseMethod("fxy")
fxy.default=function(x,...){
        print("default")
}
fxy.X=function(x,...) {
        print("X")
        NextMethod()
}
fxy.Y=function(x,...) {
        print("Y")
        NextMethod()
}

x <- 1
y <- 2
class(x) <- c("X")
class(y) <- c("X", "Y")
f2(x)
f2(y)

Did you find a solution?

On Thursday 22 July 2010 10:23:37 am Yuan Jian wrote:
> Hello,
> �
> ###� I created two classes "A" and "B". "A" is the superclass of "B".
> �
> setClass("A", representation(s1="numeric"),prototype=prototype(s1=8))
> setClass("B",contains="A",representation(s2="character"),prototype=list(s2=
> "hi")) myA=new("A")
> myB=new("B")
> �
> ####� I created functions for "A" and "B"
> �
> f1=function(x,...) UseMethod("f")
> f.default=function(x,...){
> ��� print("default")
> �}
> �f.A=function(x,...) {
> ���� print(paste("x...@s1=", x...@s1, sep=""))
> ��� �NextMethod()
> �}
> �f.B=function(x,...) {
> ��� �print(paste("x...@s2=", x...@s2, sep=""))
> ���� NextMethod()
> �}
> �
> #### when I do
> �f1(myB)
> ## R gave me the result
> [1] "x...@s2=hi"
> [1] "default"
> ## but I think the result should be
> [1] "x...@s2=hi"
> [1] "x...@s1=8"
> [1] "default"
> �
> ## because the the NextMethod() should go to f1.A not directly to
>  f1.default. could you please tell me where I got wrong understanding?
> �
> Yu
> �
> 
> �
> 
> 
> 
>       [[alternative HTML version deleted]]
> 

-- 
----
Friedrich Schuster
Dompfaffenweg 6
69123 Heidelberg

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to