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 功能