在 Case Class 定义中连接 HList 类型

Concatenating HList Types in Case Class Definition

我有三个 HList ABR。在 case class 定义中,我想强制执行这三个 HList 之间的关系。

代码如下所示:

trait Base[A <: HList]    
case class Concat[A <: HList, B <: HList, R <: HList](a: A, b: B) extends Base[R]

是否可以强制 R 是 HLists AB 的串联?或者有没有一种方法我不需要类型 R 但仍然强制 Base 的类型参数是 AB 的串联?

你想要Prepend:

case class Concat[A <: HList, B <: HList, R <: HList](a: A, b: B)(implicit p: Prepend.Aux[A, B, R]) extends Base[R]

还有一个有用的配套方法,无需指定 R

即可构建
def concat[A <: HList, B <: HList](a: A, b: B)(implicit p: Prepend[A, B]): Concat[A, B, p.Out] = Concat(a, b)(p)