小编ahj*_*sen的帖子

将无形HList转换为较小的HList

我有一个无形的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中有一些内置功能吗?

scala shapeless

6
推荐指数
2
解决办法
1071
查看次数

将 HList 转换为 HList 的 HList

如何将 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)

scala shapeless

4
推荐指数
1
解决办法
200
查看次数

标签 统计

scala ×2

shapeless ×2