сделать ленивый вар в скале

Scala не позволяет создавать laze vars, только lazy vals. Это имеет смысл.

Но я столкнулся с вариантом использования, в котором я хотел бы иметь аналогичные возможности. Мне нужен ленивый держатель переменных. Ему может быть присвоено значение, которое должно рассчитываться с помощью трудоемкого алгоритма. Но позже оно может быть переназначено на другое значение, и я бы вообще не хотел вызывать вычисление первого значения.

Пример, если предположить, что есть какое-то магическое определение

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, которая не требует от меня написания ненужного кода

Ответы на вопрос(5)

Ваш ответ на вопрос