【发布时间】:2012-07-02 07:16:33
【问题描述】:
Scala 不允许创建惰性变量,只能创建惰性变量。有道理。
但我遇到了一些用例,我希望在其中拥有类似的功能。我需要一个惰性变量持有者。它可能被分配一个应该通过耗时的算法计算的值。但它可能稍后会重新分配给另一个值,我根本不想调用第一个值计算。
假设有一些神奇的 var 定义的示例
lazy var value : Int = _
val calc1 : () => Int = ... // some calculation
val calc2 : () => Int = ... // other calculation
value = calc1
value = calc2
val result : Int = value + 1
这段代码应该只调用calc2(),而不是calc1
我知道如何使用隐式转换和特殊容器类编写这个容器。我很好奇是否有任何不需要我编写不必要代码的嵌入式 scala 功能
【问题讨论】:
标签: scala lazy-evaluation