将参数作为val传递给class

时间:2014-10-31 09:18:59

标签: class scala parameters parameter-passing

在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) {

1 个答案:

答案 0 :(得分:3)

如果省略val,您将只能在类实例中访问_x_y作为构造函数args上的闭包(换句话说,它们不会是一个班级MathOperations)。

即。像这样的代码:

val mo = new MathOperations(1, 2)
mo._x

...会产生编译错误,而如果添加val,它将编译正常。