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
.
冲突
在 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
.