案例类ToString的通用定制

时间:2013-07-05 09:37:14

标签: 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)) 

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

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

是否可以有这样的输出?

Person(
  name="Aaron",
  age=28
)

1 个答案:

答案 0 :(得分: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))