在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")
答案 0 :(得分:6)
您不能在案例类本身中执行此操作,并且它不会创建构造函数,但可以通过随附的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
冲突。
答案 1 :(得分:1)
也许你只想要这个?
case class Terminal(value: Double) {
val name = a.toString
}