scala - 使用 Shapeless 展平包含 case 类元素的任意嵌套元组

标签 scala tuples shapeless

我使用了以下示例:

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

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

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)

关于scala - 使用 Shapeless 展平包含 case 类元素的任意嵌套元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52836858/

相关文章:

scala - 花括号和括号之间在Scala中的形式差异是什么?何时使用?

scala - 在 Play 2.1 中,使用什么代替已弃用的 PushEnumerator

list - 返回命名元组中命名元组列表中的替换字段

scala - 使用 Shapeless 将案例类层次结构转换为 scalaz.Tree

scala - 处理 Scala 集合中的异常

scala - 声明变量时出现 NoSuchMethodError

python - 在元组中插入项目

c++ - 这个创建元组的习语有名字吗?

database - 在客户端和服务器之间共享的代码中表示 DB 实体的惯用方式

scala - 如何在 scala 中要求类型安全的常量大小数组?