Scala:展平混合集(或列表或数组)

时间:2017-08-03 11:44:29

标签: scala

我有一个包含字符串组合和字符串子集的Set,如下所示:

val s = Set(brand1-_test, Set(brand-one, brand_one, brandone), brands-two, brandthree1, Set(brand-three2, brand_three2, brandthree2))

如何平整这个以便我有一套扁平的字符串? s.flatten无法处理以下错误:

error: No implicit view available from Object => scala.collection.GenTraversableOnce[B]

flatMap也不是。我在这里错过了什么? Set可以很容易地合并subLists或subArrays(它们是前一个函数的结果),如果这会产生影响。

2 个答案:

答案 0 :(得分:5)

 s.flatMap { case x:Iterable[_] => x; case y => Seq(y) }

答案 1 :(得分:0)

尝试将其放入REPL:

scala> val s = Set("s1", Set("s2", "s3"))
s: scala.collection.immutable.Set[Object] = Set(s1, Set(s2, s3))

因为你提供了两种类型(Set和String),所以scala推断出一种覆盖两者的类型(在这种情况下是Object,但在大多数情况下可能是Any或AnyRef),它不是一个集合,因此不能展平。