在“ReferenceClass”中延迟评估的计算字段

时间:2014-01-08 21:10:17

标签: r reference-class

在一个精简的示例中,我有一个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}}?

1 个答案:

答案 0 :(得分:1)

很明显,value在被引用之前会被评估。参见

Auto update of a field (data member) in R reference class

默认情况下,调用对象必须引用其所有字段,因此也会对它们进行评估。