2017-08-03 8 views
1

ので、同様に、私は、文字列の組み合わせを組み込んだセット、および文字列のサブセットを持っている:私はそのようスカラ:セット(またはリストや配列)の混合セットを平ら

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

がどのように私はこれを平らにします1つのフラットな文字列がありますか? s.flattenは、次のエラーで動作しません:

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

どちらもflatMapを行います。私はここで何が欠けていますか? Setは、それが違いを生むならば、subListsまたはsubArrays(これは前の関数の結果である)を簡単に組み込むことができます。

+1

あなたには[任意のセット]があります。コンパイラはそれをどのように平坦化するかを知らない。 –

+0

しかし、各セットのアイテムはすべて同じです(文字列) - 違いはありませんか?これを平らにする方法はありますか? – renegademonkey

+1

これは同じではありません。いくつかの要素は文字列であり、いくつかは集合です。 –

答えて

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

REPLでそれを入れてみてください:

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

あなたは二つのタイプ(設定およびString)を提供しているので、その後、Scalaは、ほとんどの両方をカバータイプ(この場合は、オブジェクト、おそらくどれかAnyRefを推論ケース)はコレクションではないため、フラット化できません。

関連する問題