按模式对 HList 排序
Sort HList by pattern
假设我有一个 hlist
val hlist: Boolean :: Int :: HNil = true :: 42 :: HNil
我有一个模式
type Pattern = Int :: Boolean :: HNil
如何使用该模式对现有的 hlist 重新排序?即
reorder[Int :: Boolean :: HNil](hlist) // 42 :: true :: HNil
您正在寻找 align
和对应的 Align
类型 class in shapeless.ops.hlist
,
scala> import shapeless._
import shapeless._
scala> val hlist: Boolean :: Int :: HNil = true :: 42 :: HNil
hlist: shapeless.::[Boolean,shapeless.::[Int,shapeless.HNil]] = true :: 42 :: HNil
scala> type Pattern = Int :: Boolean :: HNil
defined type alias Pattern
scala> hlist.align[Pattern]
res0: Pattern = 42 :: true :: HNil
假设我有一个 hlist
val hlist: Boolean :: Int :: HNil = true :: 42 :: HNil
我有一个模式
type Pattern = Int :: Boolean :: HNil
如何使用该模式对现有的 hlist 重新排序?即
reorder[Int :: Boolean :: HNil](hlist) // 42 :: true :: HNil
您正在寻找 align
和对应的 Align
类型 class in shapeless.ops.hlist
,
scala> import shapeless._
import shapeless._
scala> val hlist: Boolean :: Int :: HNil = true :: 42 :: HNil
hlist: shapeless.::[Boolean,shapeless.::[Int,shapeless.HNil]] = true :: 42 :: HNil
scala> type Pattern = Int :: Boolean :: HNil
defined type alias Pattern
scala> hlist.align[Pattern]
res0: Pattern = 42 :: true :: HNil