2016-09-15 8 views
0

私はブール値の配列を使用して別の配列の特定の要素を選択しようとしています。ブール値マスクをScala配列に適用する

val arr_new = Seq("A","C") 

Scalaでこれを達成する方法はあります:私は出力が新しい配列になりたい

val arr = Seq("A", "B", "C") 
val mask = Seq(true,false,true) 

と:たとえば?

答えて

7
scala> arr.zip(mask).collect { case (v, true) => v } 
res0: Seq[String] = List(A, C) 
+0

cool!部分関数がマップとフィルタの組み合わせである、すなわち部分関数の有効な引数でないすべての値が無視されることを知りました。 – Samar

+2

@Samar 'map'と' filter'を組み合わせた部分関数ではありません。それは 'collect'であり、引数が定義されていない要素を無視するように特別に定義されています。部分的な機能を受け入れる他の方法は、この場合には他のことを行うことができる。 –

+0

@AlexeyRomanov:collectのためのドキュメントから:def collect [B](pf:PartialFunction [A、B]):配列[B] 'collectは部分的な関数を受け入れます。 – Samar

関連する問題