Scala不允許創建lazer變量,只有懶惰的vals。有道理。在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
我有一個想法,我怎麼能寫與隱式轉換而這個容器和特殊的容器類。我珍玩如果有不需要我寫不必要的代碼
+1第二種選擇 – paradigmatic
這不是一個正確的解決方案,因爲它不捕獲一個懶惰的「緩存」的性質。即每次你評估lv.value時,函數都會被重新執行(在這個例子中它會一次又一次地打印)。 –