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

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

在此示例中myCar.miles为我提供了英里的值。但是我想定义明确的getter来处理myCar的miles属性。这个怎么做?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