在case类上使用toString生成一个值是好还是坏的做法?

cur*_*ous 1 scala

我有一个case class让我们说:

case class Offset(a:String, b:Int, c: UUID) {
 override def toString: String = productIterator.mkString(",")
}

val offset: String = Offset("some_String", 2, java.util.UUID.randomUUID).toString
Run Code Online (Sandbox Code Playgroud)

override toString对于case类的方法是否合适,或者我应该实现一个不同的方法让我们说generateOffset同样的事情:

case class Offset(a:String, b:Int, c: UUID) {
  def generateOffset: String = productIterator.mkString(",")
}

val offset: String = Offset("some_String", 2, java.util.UUID.randomUUID).generateOffset
Run Code Online (Sandbox Code Playgroud)

mjj*_*iec 8

toString由人和调试工具使用.所以它应该包含简洁的人类可读信息.你不应该以你的逻辑为基础toString

第二版更清晰,至少对我而言.