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

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

この例では、myCar.milesは私にマイルの値を与えます。しかし、私は明示的なgetterを定義して、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

関連する問題