【问题标题】:Flattening arbitrarily nested tuples containing case class elements using Shapeless使用 Shapeless 展平包含案例类元素的任意嵌套元组
【发布时间】:2018-10-16 13:40:44
【问题描述】:

我使用了以下示例:

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

扁平化元组。但是我现在意识到案例类也被展平了。他们有什么方法可以确保只有元组被展平吗?

TIA

【问题讨论】:

    标签: scala tuples shapeless


    【解决方案1】:

    您可能需要一个隐式的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)
    

    【讨论】:

    • 价值黄金。维伦丹克。
    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 2015-10-16
    • 1970-01-01
    • 2020-10-04
    • 2017-10-10
    • 2012-11-21
    • 2019-11-14
    • 2021-11-06
    相关资源
    最近更新 更多