Ich habe in meinem Projekt Objekte, die IDs darstellen.Scala Wert Klasse mehrere Vererbung
Sagen wir es ist ChairId, TableId, LampId. Ich möchte, dass sie alle von GenericId erben. Und ich möchte anrufen def f(x: GenericId) = x.id
Ich möchte, dass sie nur einzelne id: String
halten, damit ich möchte, dass sie AnyVal erweitern.
Auch würde ich für jeden Typ wie Funktion bereitzustellen generate
die meine spezifische ID dh erzeugen würde ich möchte etwas geben wie ChairId.generate()
ich diese eingegeben haben:
sealed abstract class GenericId(val id: String)
final case class ChairId(override val id: String) extends GenericId(id)
final case class TableId(override val id: String) extends GenericId(id
Und ich aber, wenn GenericId würde von AnyVal erben, was funktionieren würde, aber bisher kein Glück;/Ich habe auch versucht, GenericId zu einem Merkmal zu machen und Case-Klassen AnyVal mit GenericId zu erweitern, aber auch nicht compilieren:/
Anot ihre Sache mit TableId.generate()
Ich kann Companion Objekt nur mit der Funktion generate
und das im Grunde mein Problem zu lösen, aber ich fragte mich, ob es die Möglichkeit gibt, das zu lösen, ohne Begleiter-Objekt zu definieren? (Dh durch implicits irgendwie)
// bearbeiten
Kommentar über Code zur Verfügung zu stellen, die nicht kompilieren lässt (und ich möchte):
sealed abstract class AbstractId(val id: String) extends AnyVal
final case class CatId(override val id: String) extends AbstractId(id)
final case class DogId(override val id: String) extends AbstractId(id)
Ich bin mir nicht ganz sicher, was Sie hier fragen. Wenn mehrere Fragen vorhanden sind, möchten Sie sie möglicherweise in mehrere Stack Overflow-Fragen aufteilen. –
Bitte fügen Sie den Code und die Kompilierungsfehler für die Dinge, die Sie ausprobiert haben, ein. Ich denke, das wäre hilfreich. –