Scala は laze var の作成を許可せず、lazy val のみを作成します。それは理にかなっています。
しかし、同様の機能が必要なユースケースに出くわしました。怠惰な変数ホルダーが必要です。時間のかかるアルゴリズムによって計算されるべき値が割り当てられる場合があります。しかし、後で別の値に再割り当てされる可能性があるため、最初の値の計算をまったく呼び出したくありません。
いくつかの魔法の var 定義があると仮定した例
lazy var value : Int = _
val calc1 : () => Int = ... // some calculation
val calc2 : () => Int = ... // other calculation
value = calc1
value = calc2
val result : Int = value + 1
このコードは、calc1 ではなく、calc2() のみを呼び出す必要があります。
暗黙の変換と特別なコンテナー クラスを使用して、このコンテナーを作成する方法を考えています。不要なコードを書く必要のない組み込みの scala 機能があるかどうか、私は興味があります