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
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:
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.
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
Tags und Links scala