Ich versuche, eine Methode zu parametrisieren, die an einem generischen Typ A
arbeiten muss, für den ein LabelledGeneric
abgerufen werden kann. Hier ist der naive Ansatz
Natürlich klagt das zugrunde liegende Makro. Es weiß nicht genug über A
:
Typ A ist keine Klasse oder Eigenschaft
Also habe ich versucht, das LabelledGeneric
abgeleitet zu haben
Das scheint zu funktionieren, aber der Repr
-Typ ist nicht mehr als HList
bekannt
type arguments [lbl.Repr] entsprechen nicht den type-Parametergrenzen der Methode apply [L & lt; shapeless.HList]
Ok, versuchen wir genauer zu sein
%Vor% Nun ist Repr
definitiv ein HList
, aber trotzdem kann Keys
seine implicits nicht auflösen
konnte keinen impliziten Wert für Parameterwerte finden: shapeless.ops.record.Values [lbl.Repr]
Letzter Versuch, versuchen wir, alles, was ich brauche, implizit zu berechnen
%Vor%Immer noch kein Glück, anscheinend das erste implizite kann nicht auf der Aufrufseite
gelöst werdenkonnte keinen impliziten Wert für den Parameter lbl finden: shapeless.LabledGeneric.Aux [example.Main.Foo.type, Repr]
[Fehler] Parameter (Foo)
Natürlich funktioniert diese ganze Maschine, wenn sie direkt mit dem spezifischen Typ, z.B.
, arbeitet %Vor%Ich vermisse eindeutig die erforderlichen Verfeinerungen an meinem Typ in der Methodensignatur, aber ich kann mir vorstellen, was hier vor sich geht. Irgendeine Idee?
Die letzte Variante, bei der alles implizit berechnet wird, funktioniert für mich,
%Vor%(Ergebnistypen werden zur besseren Lesbarkeit angezeigt).
Tags und Links scala shapeless labelled-generic