使用 Shapeless 展平包含 case class 元素的任意嵌套元组
Flattening arbitrarily nested tuples containing case class elements using Shapeless
我用了下面的例子:
展平元组。但是我现在意识到 case 类 也变平了。他们有什么办法可以确保只有元组被展平吗?
TIA
你可能需要一个隐含的 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)
我用了下面的例子:
展平元组。但是我现在意识到 case 类 也变平了。他们有什么办法可以确保只有元组被展平吗?
TIA
你可能需要一个隐含的 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)