在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)
您不能在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.
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |