【发布时间】:2013-12-28 08:49:34
【问题描述】:
我希望能够分派到environment 中定义的方法。这将允许我为proto 对象定义多态方法(proto 对象又继承自environment 类)。例如:
x <- proto()
x$foo <- function(., obj) UseMethod("foo", obj)
x$foo.list <- function(., obj) "obj is a list!"
x$foo.data.frame <- function(., obj) "obj is a data.frame"
x$foo.default <- function(., obj) "obj is neither a list nor a data.frame!"
所以我可以这样做:
> x$foo(list())
[1] "obj is a list!"
> x$foo(1)
[1] "obj is neither a list nor a data.frame!"
但是,我现在调用x$foo 时得到的只是
Error in UseMethod("foo") :
no applicable method for 'foo' applied to an object of class "c('proto', 'environment')"
如何解决这个问题?
【问题讨论】:
标签: r oop polymorphism prototype proto