如何在Scala中链接生成带过滤器的元组的映射?

Eli*_*les 2 scala function map

所以,我有一个简单的集合,说:

val a = List(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

我想将它映射到元组列表,然后对其进行过滤,然后将其映射到它的结果,所以它将类似于:

a.map(x => (x, x * x)).filter(tup => tup._2 < 10).map(tup => tup._1 + tup._2)
Run Code Online (Sandbox Code Playgroud)

除了使用tup和之外tup._1,我想使用像number和这样的变量名square,最好是在参数部分.

可能吗?我怎样才能做到这一点?

4le*_*x1v 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)
Run Code Online (Sandbox Code Playgroud)

在这种情况下收集就像地图和过滤器的组合