案例类ToString的通用定制

Seb*_*ber 11 scala

在此链接:https://stackoverflow.com/a/4055850/82609

它解释了这一点

case class Person(name: String, age: Int) {
   override def productPrefix = "person: "
}

// prints "person: (Aaron,28)" instead of "Person(Aaron, 28)"
println(Person("Aaron", 28)) 
Run Code Online (Sandbox Code Playgroud)

有没有办法做一些事情,比如将case类与一些trait混合,提供比默认值更好的ToString?

我真的不喜欢没有打印字段名称,对于大型案例类,有时很难阅读日志.

是否有可能有这样的输出?

Person(
  name="Aaron",
  age=28
)
Run Code Online (Sandbox Code Playgroud)

rle*_*ndi 12

压倒一切toString()怎么样?即使在特定的特征中(或者每次在case类的级别并调用对象函数),您也可以这样做.

trait CustomToString {
  override def toString() = "do some reflection magic here"
}

case class Person(name: String, age: Int) extends CustomToString

println(Person("Belä", 222))
Run Code Online (Sandbox Code Playgroud)