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