我有很多类看起来像这样:
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方法创建一个与该类同名的辅助对象:我希望有一些更简洁的东西.
您可以使用块来创建临时助手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)