fazer um var preguiçoso em scala

Scala não permite criar laze vars, apenas lazy vals. Faz sentido.

Mas eu encontrei o caso de uso, onde gostaria de ter capacidade semelhante. Eu preciso de um suporte variável preguiçoso. Pode ser atribuído um valor que deve ser calculado pelo algoritmo que consome tempo. Mas pode ser reatribuído posteriormente a outro valor e eu gostaria de não chamar o cálculo do primeiro valor.

Exemplo assumindo que existe alguma definição mágica var

lazy var value : Int = _
val calc1 : () => Int = ... // some calculation
val calc2 : () => Int = ... // other calculation
value = calc1
value = calc2
val result : Int = value + 1

Este pedaço de código só deve chamar calc2 (), não calc1

Tenho uma ideia de como posso escrever este contêiner com conversões implícitas e uma classe de contêiner especial. Eu sou curioso se existe algum recurso scala incorporado que não me exige escrever código desnecessário

questionAnswers(5)

yourAnswerToTheQuestion