Ich schreibe generischen Code für die Verarbeitung von Listen von Fallklasseninstanzen, sammelt Werte in jedem Feld, kombiniert und dann an die Bibliothek übergeben.Wie zum Auflisten von formlosen Record und Zugriff Feldschlüssel in der Laufzeit?
Mit formlos LabelledGeneric
und polymorphe Funktionen, sieht es wie folgt aus:
object toNamedSingletonListOfValues extends Poly1 {
implicit def caseField[K,T] =
at[FieldType[K, T]](field => { field.key -> List[T](field) })
}
val generic = LabelledGeneric[MyClass]
val records = listOfMyClassInstances.map(generic.to)
val values = records.map(_.map(toNamedSingletonListOfValues)) // Then combining and passing
Ich brauche aber einen Weg field.key
zu bekommen, weil die Bibliothek die Parameternamen muss.
Würde es Ihnen etwas ausmachen, die Lösung vorzuschlagen?
Vielen Dank! Ich habe jetzt ein paar Dinge neu zu schreiben, aber es hat tatsächlich Fortschritte für mich ermöglicht. BTW, ich habe versucht, Aux'es zu verwenden, aber ich konnte Aux nicht herausfinden, welches Objekt ich verwenden muss. Keine Dokumente für die Aux'es, und es ist fast unmöglich, dieses Wissen aus dem formlosen Quellcode abzuleiten, da Aux-Definitionen über alle formlosen Quellcodedateien verstreut sind. –
Die 'Aux'-Typen sind alle mit einer bestimmten Typklasse gepaart und sollen einen Typmember zu einem Typparameter befördern. Du könntest das mit 'wk: Witness {type T = K}' schreiben, aber die 'Aux'-Version ist schöner. –