R6类中的静态方法

Abi*_*iel 11 r r6

有没有办法向R6类添加静态方法?例如,可以调用的函数

MyClass$method()
Run Code Online (Sandbox Code Playgroud)

代替

myinstance <- MyClass$new()
myinstance$method()
Run Code Online (Sandbox Code Playgroud)

ber*_*ant 11

我不是R6的专家,但由于每个R6类都是一个环境,你可以在这个环境中添加你想要的任何东西.

喜欢:

MyClass$my_static_method <- function(x) { x + 2}
MyClass$my_static_method(1)
#[1] 3
Run Code Online (Sandbox Code Playgroud)

但该方法不适用于该类的实例:

instance1 <- MyClass$new()
instance1$my_static_method(1)
# Error: attempt to apply non-function
Run Code Online (Sandbox Code Playgroud)

您应该小心类环境中的现有对象.要查看已定义的内容,请使用ls(MyClass)