default case class 参数取决于其他参数 scala

default case class argument depending on other arguments scala

scala 中,我不允许执行以下操作:

case class Terminal(value: Double, name: String = value.toString)

而且这个我也做不到:

case class Terminal(value: Double)(name: String = value.toString)

我了解构造函数不支持多参数列表方法。

有没有办法在 apply 方法中定义以实现此目的?

预期行为:

Terminal(1.0) // => Terminal (1.0, "1.0")

也许你只是想要这个?

case class Terminal(value: Double) {
    val name = a.toString
}

你不能在 class 本身的情况下这样做,它不会生成构造函数,但可以通过 companion 上的 apply 方法实现。

case class Terminal(value: Double, name: String)
object Terminal {
  def apply(value: Double): Terminal = Terminal(value, value.toString)
}

注意:

def apply(value: Double, name: String = value.toString) = new Terminal(value, name)

是一个错误,因为它与自动生成的 apply.

冲突