Überschreibe Setter auf Var

9

Eine kleine Frage mit hoffentlich winziger Antwort:

Ich habe ein var in meiner Klasse, das jedes Mal eine Art von Aktualisierung auslösen muss, wenn es gesetzt ist. Ich weiß, dass ein var implizit zwei Methoden damit erhält, einen Getter und einen Setter. Ist es möglich, die Setter-Methode irgendwie zu überschreiben, um sicherzustellen, dass das Update ausgelöst wird, ohne rekursiv zu werden? Ich meine

%Vor%

Wird wahrscheinlich eine unendliche Rekursion sein, richtig?

Die var wird nur außerhalb der Klasse gesetzt und nur innerhalb der Klasse gelesen, vielleicht hilft das.

Danke fürs Zuhören.

    
Lanbo 13.02.2011, 19:31
quelle

1 Antwort

4

Ihr Code wird niemals eine unendliche Rekursion sein, weil er nicht kompiliert wird. Aufgrund der impliziten Erstellung eines Getter und eines Setter durch den Compiler können solche Methoden nicht doppelt erstellt werden. Ich weiß nicht, ob es einen Grund gibt, warum der Compiler nicht prüft, ob ein Getter oder ein Setter existiert und nur wenn es keine solchen Methoden gibt, erzeugt er einen.

Sie können dieses Problem vermeiden, indem Sie die private Variable umbenennen:

%Vor%

Diese Methoden haben dieselbe Signatur wie die vom Compiler generierten Methoden.

Wenn die Methode update nur einmal aufgerufen wird, können Sie dies im Companion-Objekt tun:

%Vor%

Gibt es einen Grund, warum Sie kein unveränderliches Objekt bevorzugen? Wenn nein, können Sie das alte kopieren und gleichzeitig einen neuen Wert festlegen:

%Vor%     
sschaef 13.02.2011, 21:09
quelle

Tags und Links