Ich habe zwei Möglichkeiten (eine weniger als die andere) der Erklärung implicit
für Typenklassenmuster in Scala gesehen.Scala implizites Objekt vs implizit val
implicit val instance1 = new Typeclass { def do = ??? }
implicit object instance2 extends Typeclass { def do = ??? }
Wie unterscheiden sie sich? Soll man für bestimmte Zeiten einander den Vorzug geben? Ich finde implicit val
viel häufiger verwendet als implicit object
und ich habe noch viele Ressourcen über implicit object
finden.
Also, die Entscheidung, ein 'implizites'' Objekt' gegenüber 'val' zu verwenden, hängt davon ab, ob man eine faule oder strikte Initialisierung vorzieht? –
Das könnte eine Überlegung sein (obwohl Sie '' lazy val'' verwenden können, um Faulheit mit 'val' zu bekommen), aber nicht die einzige. Zum Beispiel kann ein "val" Mitglied in einer Unterklasse außer Kraft gesetzt werden, während ein "object" Mitglied dies nicht kann. Ich bin mir sicher, dass es noch viele andere Unterschiede gibt. –