Ответ 1
Да, есть:
class Point(val x: Int, val y: Int)
Посмотрите на этот пример:
class Point(x: Double, y: Double){
override def toString = "x: " + x + ", y: " + y
def +(sourcePoint: Point) : Point = {
return new Point(x + sourcePoint.x, y + sourcePoint.y
}
}
Как вы можете видеть, я хочу определить оператор оператора +
для класса Point. Но это не сработает
потому что в этом методе x
и y
не могут быть доступны в локальной переменной sourcePoint
, поскольку они являются частными, поэтому я изменил этот пример следующим образом:
class Point(_x: Double, _y: Double){
var x = _x
var y = _y
override def toString = "x: " + x + ", y: " + y
def +(sourcePoint: Point) : Point = {
return new Point(x + sourcePoint.x, y + sourcePoint.y)
}
}
Очевидно, что это работает, однако есть более простой способ определить эти переменные вместо перехода от _x → x и _y → y.
Спасибо за помощь и время!:)
Да, есть:
class Point(val x: Int, val y: Int)
используя val
, но затем параметр становится окончательным (постоянным).
Если вы хотите переназначить значение, вы должны использовать var
. Итак,
class Point(var x: Int, var y: Int)