Scala案例类具有默认的toString函数.但是当这个case类使用现有的toString()函数扩展一个特征时,它将变得无用.我该如何防止这种情况?
tri*_*oid 24
好的,这是一个简单的答案:
override def toString = ScalaRunTime._toString(this)
Run Code Online (Sandbox Code Playgroud)
故事结局:)
这是我认为可行的解决方法,可能是太多的仪式,你决定.它涉及到trait.
trait StandardToString { this:Product =>
override def toString = productPrefix + productIterator.mkString("(", ",", ")")
}
Run Code Online (Sandbox Code Playgroud)
现在尝试一些样本:
trait Human {
override def toString() = "Human"
}
case class European(firstName:String) extends Human
Run Code Online (Sandbox Code Playgroud)
并使用特征运行它:
scala> new European("Falco") with StandardToString
res0: European with StandardToString = European(Falco)
Run Code Online (Sandbox Code Playgroud)
当然,trait你留下了
scala> new European("Adele")
res1: European = Human
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8488 次 |
| 最近记录: |