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

标签 scala constructor

我有很多这样的类:

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

...除了我不想在构造函数末尾之外保留“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();
  }
}

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

最佳答案

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

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

关于scala - 具有非实例变量助手的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2889032/

相关文章:

eclipse - 在heroku上部署scalatra应用程序错误找不到插件

C++ 在类构造函数中定义一个常量成员变量

java - 不允许在调用 super 构造函数时使用实例变量和方法

Java找不到合适的构造函数

java - 为什么这个使用泛型的构造函数会失败?

scala - Scala的case class和class有什么区别?

scala - Akka Actor - 创建 Actor 池

scala - 在 Scala 中获取一定范围大小的子集?

mysql - 时间戳分区键上的 Spark JoinWithCassandraTable STUCK

java - 在 KNIME 中使用外部 java 库。为什么一个类的初始化失败而另一个类的初始化成功?