case class KiloGram[A] (value:A)
val mass= KiloGram(20.0)
Mit dem scalaz Tag der Verwendung können wir so etwas tun:Was ist der Vorteil scalaz Tag statt einer Fallklasse
import scalaz._
sealed trait KiloGram
def KiloGram[A](a: A): A @@ KiloGram = Tag[A,KiloGram](a)
val mass = KiloGram(20.0)
Nun, wenn wir tatsächlich den Wert eines Tagged Objekt verwenden möchten , müssen wir es
val twoTimesMass=2*Tag.unwrap(mass)
Also wirklich ich auspacken nicht den Nutzen ich über mit einem Fallklasse gewinnen sehen
case class KiloGram[A] (value:A)
val mass= KiloGram(20.0)
val twoTimesMass=2*mass.value
finde ich eigentlich den zweite Ansatz viel weniger ausführlich
Eine bessere Frage
value
für Fallklassen Aufruf wäre: „Was ist der Vorteil einer scalaz-Tag statt einer Wertklasse der Verwendung (' erstreckt AnyVal ')" –wollte nicht, um es auf AnyVal zu reduzieren, so habe ich den Beitrag bearbeitet –
Eine Fallklasse hat Overhead, ein Wert (AnyVal) -Klasse nicht, in ähnlicher Weise wie das Tag. Ich persönlich habe die Verwendung von Tagged-Typen wegen Problemen bei der Serialisierung unter Verwendung von json4s gestoppt. –