我有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
对于案例类的override toString
方法是否正常,或者我应该实现一个不同的方法,让我们说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
答案 0 :(得分:7)
toString
。所以它应该包含简洁的人类可读信息。
您不应该将您的逻辑基于toString
第二版更清晰,至少对我而言。
答案 1 :(得分:-1)
这取决于您的案例类使用情况。
覆盖toString
方法将为您提供许多好的功能,例如自定义字符串插值:
val offset = Offset("some_String", 2, java.util.UUID.randomUUID)
val str = s"""Offset object is $offset"""
Scala会在引擎盖下调用你的toString方法并将其插入字符串中。
所以总的来说这是个好主意。