, toString, , , case , .
?
trait TabbedToString {
_: Product =>
override def toString = productIterator.mkString(s"$productPrefix[", "\t", "]")
}
: . self-type, this: Product => self: Product =>. , , (TabbedToString) Product, productIterator productPrefix. case Product.
:
case class Person(name: String, age: Int) extends TabbedToString
Person("Joe", 45).toString