有没有办法将静态方法添加到 R6 类?例如,可以像这样调用的函数
MyClass$method()
代替
myinstance <- MyClass$new()
myinstance$method()
我不是 R6 方面的专家,但由于每个 R6 类都是一个环境,因此您可以在该环境中添加任何您想要的东西。
喜欢:
MyClass$my_static_method <- function(x) { x + 2}
MyClass$my_static_method(1)
#[1] 3
但是该方法不适用于类的实例:
instance1 <- MyClass$new()
instance1$my_static_method(1)
# Error: attempt to apply non-function
您应该小心类环境中的现有对象。要查看已定义的内容,请使用ls(MyClass)
我已经为解决方案使用了解决方法。您可以通过调用来访问这些方法,而无需创建实例MyClass$public_methods$my_static_method()
。为了限制没有实例的调用,我self
在所有方法中都做了一个参数。