2016-11-30 6 views
0
class Car(val miles:Int,val year:Int) 

val myCar = new Car(100,2016); 
println(myCar.miles) 

В этом примере myCar.miles дает мне значение миль. Но я хочу определить явные getters, чтобы что-то сделать с помощью свойства миль myCar. Как это сделать?Явный геттер в Scala

ответ

4

Определите метод:

class Car(mi: Int, val year: Int) { 
    def miles = 2 * mi 
} 

val myCar = new Car(100, 2016) 
println(myCar.miles) // prints 200 

Или, так как величина неизменна, определяют val так, что вычисление выполняется только один раз (вместо того, чтобы каждый раз, когда вы вызываете метод):

class Car(mi: Int, val year: Int) { 
    val miles = 2 * mi 
} 
+0

Как я понимаю, не требуется делать переопределение для mi val? Но можно ли это вообще сделать? – Pavel

+1

'mi' - это просто аргумент конструктора, не ставя перед ним' val', вы не получаете автоматически предоставленного getter и setter. – Jesper

+0

Я имею в виду, что это будет недействительным с точки зрения чистого FP, но если это разрешено в Scala ?? как я его вижу. – Pavel