2

だから、私は単純なコレクションを持っています。

val a = List(1, 2, 3, 4)

それをタプルのリストにマップし、それをフィルタリングしてから、後でその結果をマップしたいので、次のようになります。

a.map(x => (x, x * x)).filter(tup => tup._2 < 10).map(tup => tup._1 + tup._2)

tupandを使用する代わりに、できれば引数セクションでandのtup._1ような変数名を使用したいと考えています。numbersquare

出来ますか?どうすればそれを達成できますか?

4

1 に答える 1

9

部分関数と収集関数の使用を検討してください。

scala> val a = List(1, 2, 3, 4)
a: List[Int] = List(1, 2, 3, 4)

scala> a.map(x => (x, x * x)) collect {
     |   case (number, square) if square < 10 =>
     |     number + square
     | }
res0: List[Int] = List(2, 6, 12)

この場合の収集は、マップとフィルターの組み合わせのように機能します

于 2013-10-18T19:05:31.823 に答える