2013-07-05 34 views
8

: https://stackoverflow.com/a/4055850/82609Jenerik özelleştirme bu bağlantıda

O

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

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

daha iyi bir ToString sağlıyorsunuz bazı özelliğe sahip olan vaka sınıfını karıştırma gibi bir şey yapmanın bir yolu var mı olduğunu açıklar varsayılan bir?

Alan adlarının yazdırılmasını gerçekten istemiyorum ve büyük sınıflar için günlükleri okumak bazen zor.

Böyle bir çıktı elde etmek mümkün mü?

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

cevap

8

toString() neyi geçersiz kılmaya ne dersiniz? Bunu belirli bir özellikte bile (veya her seferinde vaka sınıfı düzeyinde ve bir nesne işlevini çağırırken) yapabilirsiniz.

trait CustomToString { 
    override def toString() = "do some reflection magic here" 
} 

case class Person(name: String, age: Int) extends CustomToString 

println(Person("Belä", 222)) 
+0

bu jenerik çözüm değildir ve birçok durumda sınıfları –

+0

nasıl güncellenir cevapla ilgili onu yeniden kullanmak istediğiniz? – rlegendi

+0

Kabul ediyorum, ancak burada verilen "olası kopya" bağlantısında bazı cevaplar daha uygundur: http://stackoverflow.com/questions/15718506/scala-how-to-print-case-classes-like-pretty- print-tree –