3
我正在寻找一种方法将两个HList拉链在一起。第一个是通过一般案例转换的案例类生成的,第二个是手动定义为Nat的HList。因此,我期望一个元组(或2个成员的HList)具有case类中的一个字段,并且Nat相关联。带静态Nat的HList邮编普通HList
目标是创建一个“可定制的”ZipWithIndex
。
def derive[A, I <: HList, R <: HList, Z <: HList](implicit
gen: Generic.Aux[A, R],
zipper: Zip.Aux[R, I, Z],
enc: Lazy[Encoder[Z]])(a: A): Deriver[A] = {
val genRepr = gen.to(A)
val zipped = zip(genRepr :: ??? :: HNil)
enc.value(zipped)
}
case class Foo(a: String, b: String, c: String)
derive[Foo, Nat._1 :: Nat._3 :: Nat.7 :: HNil]
结果将要匹配的encoderTuple[H, N <: Nat, T <: HList]: Encoder[(H, N) :: T]
或和encoderHList[H, N <: Nat, T <: HList]: Encoder[(H::N::HNil) :: T]
。
亲爱@JulienLafont,它已经有一段时间,因为你问你的问题的,如果你有一个时刻,你可以检查如果我的[answer](https://stackoverflow.com/a/45914883/5249621)可以吗?谢谢。 –