Scala automatische getter und setter überschreiben mit benutzerdefinierten _=

In scala gibt es keinen Unterschied für den Benutzer einer Klasse zwischen dem Aufruf einer Methode oder den Zugriff auf einige Feld/Mitglied direkt mit val x = myclass.myproperty. Um kontrollieren zu können, z.B. setzen oder sich ein Feld, scala lassen Sie uns das überschreiben der _= Methode. Aber ist = wirklich eine Methode? Ich bin verwirrt.

Nehmen wir den folgenden code:

class Car(var miles: Int)

var myCar = new Car(10)
println(myCar.miles) //prints 10
myCar.miles = 50
println(myCar.miles) //prints 50

Gleiche gilt für diesen code (beachten Sie die doppelten Leerzeichen in myCar.miles = 50):

class Car(var miles: Int)

var myCar = new Car(10)
println(myCar.miles) //prints 10
myCar.miles  = 50
println(myCar.miles) //still prints 50

Nun will ich die Art und Weise ändern, wie die miles werden kann, gelesen oder gesetzt werden, z.B. immer den Druck, etwas auf dem Bildschirm. Wie kann ich dies tun, so dass die Benutzer meiner Klasse sind davon nicht betroffen, und auch so, dass es nicht keinen Unterschied machen, wenn Leerzeichen vor dem = - Zeichen?

InformationsquelleAutor valenterry | 2014-04-08
Schreibe einen Kommentar