【问题标题】:Passing arguments to class as a val [duplicate]将参数作为 val 传递给类 [重复]
【发布时间】:2014-12-27 13:32:25
【问题描述】:

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

【问题讨论】:

  • 它被复制到至少一个曾经发布过的问题。这是一个简短的答案。如果您不将它们定义为val,则它们不会成为该类的成员。但是,如果类是 case,则每个参数都将成为该类的成员。

标签: class scala parameters parameter-passing


【解决方案1】:

如果您省略 val,您将只能在类实例中访问 _x_y 作为构造函数参数的闭包(换句话说,它们不会是类 MathOperations 的成员) .

即代码如下:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2020-03-06
    • 1970-01-01
    相关资源
    最近更新 更多