具有非实例变量助手的构造函数?

Rob*_*her 2 constructor scala

我有很多类看起来像这样:

class Foo(val:BasicData) extends Bar(val) {
    val helper = new Helper(val)
    val derived1 = helper.getDerived1Value()
    val derived2 = helper.getDerived2Value()
}
Run Code Online (Sandbox Code Playgroud)

...除了我不想在构造函数的末尾之外保留"helper"的实例.在Java中,我会做这样的事情:

public class Foo {
  final Derived derived1, derived2;
  public Foo(BasicData val) {
     super(val);
     Helper helper = new Helper(val);
     derived1 = helper.getDerived1Value();
     derived2 = helper.getDerived2Value();
  }
}
Run Code Online (Sandbox Code Playgroud)

那么我如何在Scala中做类似的事情呢?我知道使用apply方法创建一个与该类同名的辅助对象:我希望有一些更简洁的东西.

Don*_*zie 5

您可以使用块来创建临时助手val并返回一个元组,如下所示:

class Foo(v: BasicData) extends Bar(v) {
  val (derived1, derived2) = {
    val helper = new Helper(v)
    (helper.getDerived1Value(), helper.getDerived2Value())
  }
}
Run Code Online (Sandbox Code Playgroud)