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.