Shapeless - verwandelt eine Fallklasse in eine andere mit Feldern in anderer Reihenfolge
Ich denke an etwas Ähnliches wieSicheres Kopieren von Feldern zwischen Fallklassen verschiedener Typen aber mit neu geordneten Feldern, d. h.
case class A(foo: Int, bar: Int)
case class B(bar: Int, foo: Int)
Und ich hätte gerne etwas, um ein @ zu drehA(3, 4)
in einB(4, 3)
- Shapeless 'LabelledGeneric
fällt mir jedoch ein
LabelledGeneric[B].from(LabelledGeneric[A].to(A(12, 13)))
Ergebnisse in
<console>:15: error: type mismatch;
found : shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("foo")],Int],shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("bar")],Int],shapeless.HNil]]
(which expands to) shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("foo")],Int],shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("bar")],Int],shapeless.HNil]]
required: shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("bar")],Int],shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("foo")],Int],shapeless.HNil]]
(which expands to) shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("bar")],Int],shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("foo")],Int],shapeless.HNil]]
LabelledGeneric[B].from(LabelledGeneric[A].to(A(12, 13)))
^
Wie kann ich die Felder im Datensatz neu anordnen (?), Damit dies mit einem Minimum an Kochfeldern funktioniert?