Ist es in Scala möglich, implicits zu verwenden, um toString automatisch zu überschreiben?

8

In Java würde ich etwas wie

machen %Vor%

Ein bisschen klobig. In Scala ist es möglich, toString zu überschreiben, während immer noch reguläre java.util.Date anstelle von MyDate verwendet wird. Ich habe eine Ahnung, die beteiligt ist, aber würde mich freuen, jede Technik zu verwenden

    
deltanovember 04.08.2011, 10:40
quelle

1 Antwort

17

Implizite Konvertierungen können nur funktionieren, wenn der konvertierte Typ keine Methode mit einer bestimmten Signatur besitzt. Da alles eine toString hat, ist es nicht möglich, dies durch Zuhälterei zu überschreiben.

Was Sie tun könnten, ist eine typeclass (ähnlich wie scalaz.Show ), die wie folgt aussieht:

%Vor%

Dann können Sie show überall anstelle von toString verwenden. Im Idealfall möchten Sie dann die Show[Any] -Instanz implizit zu einer sehr niedrigen Priorität machen.

%Vor%

P.S. Der Grund, warum ich die Verwendung von scalaz.Show nicht vorschlagen würde, ist, dass der Rückgabetyp List[Char] ist, was für die meisten Anwendungen einfach nicht praktikabel ist

    
oxbow_lakes 04.08.2011, 10:52
quelle

Tags und Links