2013-07-05 9 views
8

na ten link: https://stackoverflow.com/a/4055850/82609Generic dostosowanie klasy przypadek ToString

Wyjaśnia, że ​​

case class Person(name: String, age: Int) { 
    override def productPrefix = "person: " 
} 

// prints "person: (Aaron,28)" instead of "Person(Aaron, 28)" 
println(Person("Aaron", 28)) 

Czy istnieje sposób, aby zrobić coś takiego mieszania klasy etui z jakiejś cechy zapewniają lepszą ToString niż domyślny jeden?

Nie bardzo lubię nie drukować nazw pól, a w przypadku dużych przypadków trudno czasem odczytać dzienniki.

Czy można uzyskać takie wyjście?

Person(
    name="Aaron", 
    age=28 
) 

Odpowiedz

8

Co powiesz na przesłonięcie toString()? Możesz to zrobić nawet w przypadku określonej cechy (lub za każdym razem na poziomie klasy sprawy i wywoływania funkcji obiektu).

+0

to nie jest ogólne rozwiązanie i chciałbym go ponownie użyć w wielu klasach przypadków –

+0

Co powiesz na zaktualizowaną odpowiedź? – rlegendi

+0

Przyjmuję, ale niektóre odpowiedzi są bardziej odpowiednie w podanym tutaj linku "możliwy duplikat": http://stackoverflow.com/questions/15718506/scala-how-to-print-case-classes-like-pretty- drukowane drzewo –