看看这个例子:
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 - >年。
感谢您的帮助和时间! :)
答案 0 :(得分:64)
是的,有:
class Point(val x: Int, val y: Int)
答案 1 :(得分:5)
使用val
有效,但参数变为final(常量)。
如果您希望能够重新分配值,则应使用var
。所以
class Point(var x: Int, var y: Int)