在一个精简的示例中,我有一个Portfolio
引用类的对象,其中包含holdings
字段中的各个资产值。还有一个字段value
,通过简单地将holdings
的各个值相加来计算:
Portfolio <- setRefClass("Portfolio",
fields = list(holdings = "numeric",
value = function(v) {
sum(holdings)
})
)
在填充holdings
广告位后,很明显会计算value
广告位。
Portfolio$new(holdings =c(1055.43, 345.7))
Reference class object of class "Portfolio"
Field "holdings":
[1] 1055.43 345.70
Field "value":
[1] 1401.13
问题 :如何重新定义以便实现对value
字段的延迟按需评估,只有在使用{直接调用它时... {1}}?
答案 0 :(得分:1)
很明显,value
在被引用之前会被评估。参见
Auto update of a field (data member) in R reference class
默认情况下,调用对象必须引用其所有字段,因此也会对它们进行评估。