默认case类参数取决于其他参数scala

rau*_*ira 2 scala case-class

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

case class Terminal(value: Double, name: String = value.toString)
Run Code Online (Sandbox Code Playgroud)

而且我也不能这样做:

case class Terminal(value: Double)(name: String = value.toString)
Run Code Online (Sandbox Code Playgroud)

我理解构造函数不支持多参数列表方法.

有没有办法在apply方法中定义才能使这成为可能?

预期行为:

Terminal(1.0) // => Terminal (1.0, "1.0")
Run Code Online (Sandbox Code Playgroud)

HTN*_*TNW 6

您不能在case类本身中执行此操作,并且它不会创建构造函数,但可以通过apply随播广告上的方法实现.

case class Terminal(value: Double, name: String)
object Terminal {
  def apply(value: Double): Terminal = Terminal(value, value.toString)
}
Run Code Online (Sandbox Code Playgroud)

注意:

def apply(value: Double, name: String = value.toString) = new Terminal(value, name)
Run Code Online (Sandbox Code Playgroud)

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