mache einen faulen var in scala

Scala erlaubt keine faulen Vars, nur faule Vals. Es macht Sinn.

Aber ich bin auf den Anwendungsfall gestoßen, bei dem ich ähnliche Fähigkeiten haben möchte. Ich brauche einen faulen Variablenhalter. Es kann ein Wert zugewiesen werden, der mit einem zeitaufwendigen Algorithmus berechnet werden sollte. Es kann jedoch sein, dass es später einem anderen Wert zugewiesen wird, und ich möchte die Berechnung des ersten Werts überhaupt nicht aufrufen.

Beispiel unter der Annahme, dass es eine magische Var-Definition gibt

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

Dieser Code sollte nur calc2 () aufrufen, nicht calc1

Ich habe eine Idee, wie ich diesen Container mit impliziten Konvertierungen und einer speziellen Containerklasse schreiben kann. Ich bin neugierig, ob es eine eingebettete Scala-Funktion gibt, für die ich keinen unnötigen Code schreiben muss

Antworten auf die Frage(5)

Ihre Antwort auf die Frage