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