在Scala中声明一个类时,您可以将参数定义为val
,如下所示:
class MathOperations(val _x: Int, val _y: Int) {
var x: Int = _x
var y: Int = _y
def product = x*y
}
但在这种情况下,当我省略val
关键字时,该类的实例行为完全相同(据我所知)
如上所述声明参数与不使用val
进行参数之间有什么区别,如下所示:
class MathOperations(_x: Int, _y: Int) {
答案 0 :(得分:3)
如果省略val
,您将只能在类实例中访问_x
和_y
作为构造函数args上的闭包(换句话说,它们不会是一个班级MathOperations
)。
即。像这样的代码:
val mo = new MathOperations(1, 2)
mo._x
...会产生编译错误,而如果添加val
,它将编译正常。