【问题标题】:Generic customisation of case class ToString [duplicate]案例类 ToString 的通用定制 [重复]
【发布时间】:2013-07-03 08:49:36
【问题描述】:

在此链接上: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
)

【问题讨论】:

    标签: scala


    【解决方案1】:

    如何覆盖toString()?您甚至可以在特定 trait 中执行此操作(或每次在案例类级别并调用对象函数)。

    trait CustomToString {
      override def toString() = "do some reflection magic here"
    }
    
    case class Person(name: String, age: Int) extends CustomToString
    
    println(Person("Belä", 222))
    

    【讨论】:

    猜你喜欢
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多