我从 R 参考类中遇到了一些我想解决的行为。在下面的代码中,引用类 B 中有两个引用类 A 的字段。
initialize()
在调用 B 的方法之前,B 中的这些字段似乎已用引用类 A 的零参数(默认)版本实例化(可能两次) 。然后在 B 的初始化过程中将这些实例替换为实例 A 的正确版本。问题是,如果我使用lock()
B 的实例生成器,A 的初始空实例无法在 B 中替换。另一个问题是引用类 A 在初始化 [或缺少(c)测试] 中需要一个默认值。
帮助 - 建议 - 等表示赞赏。
A <- setRefClass('A',
fields = list(
count = 'numeric'
),
methods = list(
initialize = function (c=0) {
cat('DEBUG: A$initialize(c); where c='); cat(c); cat('\n')
count <<- c
}
)
)
instance.of.A <- A$new(10)
str(instance.of.A)
B <- setRefClass('B',
field = list(
a = 'A',
b = 'A'
),
methods = list(
initialize = function(c) {
a <<- instance.of.A
b <<- getRefClass('A')$new(c)
}
)
)
instance.of.b <- B$new(100)
str(instance.of.b)