2

在一个精简的示例中,我有一个引用类对象,该对象在字段中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,仅当它被直接调用时Portfolio$value

4

1 回答 1

1

很明显,value直到它被引用,它才会被评估。看

R参考类中字段(数据成员)的自动更新

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

于 2014-02-06T20:28:10.357 回答