我目前正在做一个项目,我需要在 R 中构建一个R6 类,该类可以通过多种方式进行初始化。我想知道最好的方法是什么。是否可以重载$new()
函数?还是我需要定义一个辅助函数?
作为一个激励性的例子:我想要一个 R6 类的两个构造函数,MyClass
其中一个字段names
可以使用向量variable_names
或整数进行初始化n_variables
(在这种情况下,它会初始化一个默认的名称向量)。
该功能应该像这样工作:
#define the class (only has a constructor that accepts a vector of names)
myClass <- R6Class("myClass",
public = list(
names = NA,
initialize = function(names) {
if (!missing(names)) self$names <- names
})
)
#create a test object using a vector of names
variable_names = c("x","y")
a = myClass$new(variable_names)
a$names
#> [1] "x y"
#everything after here does not actually work (just to illustrate functionality)
n_variables = 2;
b = myClass$new(n_variables)
b$names
#> [1] "v1 v2"
我浏览了介绍性小插图,但似乎没有明确的方法来做到这一点。
理想情况下,我正在寻找一种不会强迫我命名参数的解决方案(即,我不必做类似的事情myClass$new(names=variable_names)
),并且可以让我轻松检查输入是否有效。