我尝试动态创建 R6 类的初始化函数。首先,我创建未锁定的类定义:
cls <- R6::R6Class(
name,
inherit=TPayload,
lock_objects=FALSE,
public=list(
module=class(tail(Parser$thrift_stack, 1)[[1]])[[1]],
ttype=ttype
))
在我添加初始化函数之后的某个地方:
cls$set("public", 'initialize', init_func_generator(cls, default_spec))
其中 init_func_generator:
init_func_generator = function(cls, spec) {
func = function(...) {
cat('Hello\n')
}
return(func)
}
当我创建一个对象时,执行简单的初始化函数就可以了。
cli$new(name='abc')
但是,当我尝试从创建的“初始化”范围之外访问“规范”变量时:
init_func_generator = function(cls, spec) {
func = function(...) {
for(s in spec) {
cat(str(s))
}
}
return(func)
}
我得到:
* object 'spec' not found
我尝试实现的目标有可能吗?