Scala setters - 多个参数

10 parameters setter scala

我可以在setter中使用多个参数吗?

例如:

private var _a = 0
def a = _a
def a_= (b: Int, c: Int) = _a = b + c
Run Code Online (Sandbox Code Playgroud)

如果是,我该如何调用setter方法?

Tom*_*icz 9

元组怎么样?

class A {
  private var _a = 0
  def a = _a
  def a_= (t: (Int, Int)) {
    _a = t._1 + t._2
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您不喜欢笨拙的元组访问语法:

class A {
  private var _a = 0
  def a = _a
  def a_= (t: (Int, Int)) {
    t match {
      case(b, c) => _a = b + c
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

用法:

val x = new A()
x.a = (3, 7)
x.a  //10
Run Code Online (Sandbox Code Playgroud)