【发布时间】:2014-03-09 10:25:39
【问题描述】:
有没有更惯用的方法将嵌套的序列序列更改为嵌套的集合集?
def toNestedSet[T](tsss: Seq[Seq[Seq[T]]]): Set[Set[Set[T]]] =
tsss.map(_.map(_.toSet).toSet).toSet
是否有可能实现一个适用于任何深度列表的函数?
【问题讨论】:
-
绝对可以以类型安全的方式执行此操作,无需任何
Any或强制转换——例如,请参阅my answer here 以获得类似问题的解决方案。你的问题有点复杂,但我 100% 确定这种方法会奏效。 -
我的第一个想法是“也许Shapeless可以处理任意嵌套Seq to Set的一般问题?” (github.com/milessabin/shapeless)
-
当我发现自己处于这种情况时,我通常会为一个或多个内部嵌套定义一个类型定义,无论如何我都需要大量重用。
-
@RandallSchulz:我想不出有什么方法可以让 Shapeless 比无 Shapeless 的实现更容易(比如 mine below)。不过,也许我错了——例如可能有一些方法可以让 SYB 做到这一点,而我目前还没有看到。