Я столкнулся с некоторой несогласованностью при вызове метода toString
для case-классов в Scala. Первый пример кода:
case class Person(name: String, age: Int)
val jim = Person("jim", 42)
println(jim)
вывод: Person(jim,42)
Для следующего примера кода я использовал класс case, который расширяет Exception
:
case class JimOverslept(msg: String) extends Exception
try {
throw JimOverslept(msg = "went to bed late")
} catch {
case e: JimOverslept => println(e)
}
вывод: playground.CaseClassOutput$JimOverslept
На самом деле, я бы предпочел вывод как JimOverslept(went to bed late)
В чем причина того, что оба выхода так различны? И как лучше всего получить результат, который выглядит как нужный (JimOverslept(went to bed late)
)