我有一个无形的HList,具有以下结构:
type ABCAB = List[A] :: List[B] :: List[C] :: List[A] :: List[B] :: HNil
val abcab: ABCAB = List[A]() :: List(B) :: List[C]() :: List(A) :: List(B) :: HNil
Run Code Online (Sandbox Code Playgroud)
我想转换成一个更简单的类型,其中从左到右追加相同类型的列表:
type ABC = List[A] :: List[B] :: List[C] :: HNil
val abc: ABC = abcab.magic // does magic exist in shapeless?
abc == List(A) :: List(B,B) :: List[C]() :: HNil // true
Run Code Online (Sandbox Code Playgroud)
为什么在无形v1.2.4中有一些内置功能吗?
如何将 HList 转换为 HList 的 HList,如下面的代码片段所示。
import shapeless._
import Nat._
case class A(i: Int)
case class B(str: String)
case class C(i: Int, str: String)
type Input = A :: B :: C :: HNil
val in: Input = A(1) :: B("b") :: C(2, "c") :: HNil
type X = A :: HNil
val x: X = A(1) :: HNil
type Y = A :: B :: HNil // could also be B :: HNil
val y: Y = A(1) :: …Run Code Online (Sandbox Code Playgroud)