在 Case Class 定义中连接 HList 类型
Concatenating HList Types in Case Class Definition
我有三个 HList A
、B
和 R
。在 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 A
和 B
的串联?或者有没有一种方法我不需要类型 R
但仍然强制 Base
的类型参数是 A
和 B
的串联?
你想要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)
我有三个 HList A
、B
和 R
。在 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 A
和 B
的串联?或者有没有一种方法我不需要类型 R
但仍然强制 Base
的类型参数是 A
和 B
的串联?
你想要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)