Ordnen Sie HList in der Methode mit Poly1 basierend auf dem Typparameter der Klasse zu
Ich habe Klasse, parametrisiert mitHList
und ein anderer Typ. Wie kann ich verwendenmap
aufHList
in einer seiner Methoden?
Zusammenstellung dieses Codes löstjava.lang.AssertionError
:
class Test[L <: HList, P](l: L, p: P) {
type Cont[T] = (P, T)
object generator extends (Id ~> Cont) {
def apply[T](t: T) = p -> t
}
def test(implicit m: Mapper[generator.type, L]) = {
l map generator
}
}
new Test(1 :: HNil, 'a).test // java.lang.AssertionError
Mein Ziel ist dieses Ergebnis:
type Cont[T] = (Symbol, T)
val p = 'a
object generator extends (Id ~> Cont) {
def apply[T](t: T) = p -> t
}
scala> (1 :: 'b' :: HNil) map generator
res0: shapeless.::[(Symbol, Int),shapeless.::[(Symbol, Char),shapeless.HNil]] = ('a,1) :: ('a,b) :: HNil