使用Shapeless展平包含案例类元素的任意嵌套元组

时间:2018-10-16 13:40:45

标签: scala tuples shapeless

我使用以下示例:

https://github.com/milessabin/shapeless/blob/master/examples/src/main/scala/shapeless/examples/flatten.scala

拉平元组。但是,我现在已经意识到,案例类也被扁平化了。我有什么办法可以确保仅将元组展平吗?

TIA

1 个答案:

答案 0 :(得分:3)

您可能需要隐式IsTuple

object flatten extends LowPriorityFlatten {
  implicit def caseTuple[P <: Product : IsTuple]
      (implicit lfm: Lazy[FlatMapper[P, flatten.type]]) =
    at[P](lfm.value(_))
}

测试:

val v4 = (Bar(Foo("a")), (true, 2.0, "foo"))
val f4 = flatten(v4)
typed[(Bar, Boolean, Double, String)](f4)