Scala: Override toString so quotes are printed around strings
introspection, scala, serialization
Solution
You could exploit the fact that case classes mix in trait `Product`:
def toSource(p: Product): String =
p.productIterator.map {
case s: String => "\"" + s + "\""
case other => other.toString
} mkString (p.productPrefix + "(", ", ", ")")
toSource(Person("Bob", 20)) // yields """Person("Bob", 20)"""
Problem
I'd like to write a "toSource" function that will generate the source code for basic case classes. For example, I'd like: ``` case class Person(name: String, age: Int) val bob = Person("Bob", 20) println(toSource(bob)) // Should print """Person("Bob", 20)""" ``` The "toString" function almost gives me what I want, but it drops the quotes around strings: ``` println(bob.toString) // Prints """Person(Bob, 20)""" ``` Any ideas how to do this?