0
class Car(val miles:Int,val year:Int)
val myCar = new Car(100,2016);
println(myCar.miles)
この例では、myCar.miles
は私にマイルの値を与えます。しかし、私は明示的なgetterを定義して、myCarのマイルプロパティで何かをしたいと思っています。これを行う方法?Scalaの明示的なゲッター
class Car(val miles:Int,val year:Int)
val myCar = new Car(100,2016);
println(myCar.miles)
この例では、myCar.miles
は私にマイルの値を与えます。しかし、私は明示的なgetterを定義して、myCarのマイルプロパティで何かをしたいと思っています。これを行う方法?Scalaの明示的なゲッター
方法を定義します
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
}
mi valのオーバーライドは必須ではないことを理解していますか?しかし、これは全くできますか? – Pavel
'mi'は単にコンストラクタの引数であり、その前に' val'を置かないので、自動的に提供されるgetterとsetterを取得しません。 – Jesper
これは、純粋なFPの観点からは有効ではないが、これがScalaで許可されているかどうか?私はそれを見ているので。 – Pavel