def toNestedSet(ts: Seq[Any]): Set[Any] = {
ts.foldLeft[Set[Any]](Set())((acc, b) => b match {
case s: Seq[_] => acc + toNestedSet(s)
case x => acc + x
})
}
trait <:!<[A, B]
implicit def nsub[A, B] : A <:!< B = new <:!<[A, B] {}
implicit def nsubAmbig1[A, B >: A] : A <:!< B = sys.error("Don't call this!")
implicit def nsubAmbig2[A, B >: A] : A <:!< B = sys.error("Don't call this!")
2 回答
为了解决你的问题的第二部分(处理任意深度的列表),这样的事情会起作用(类型擦除有点妨碍):
注意:快速和肮脏 - 它的工作原理,但相当容易打破:)
编辑:演员是多余的
这实际上并不是太糟糕(对于这种方法的一些额外讨论,请参阅my answer here):
然后:
静态类型为
Set[Set[Set[Set[[Int]]]]
和所有 .好吧,我撒谎了一下 . 上面的
<:!<
实际上并不在标准库中 . 但是,它在_2873539中,或者您可以非常非常轻松地自己定义它:这就是全部 .