如何指定传递给 Scala 映射(高阶)函数的函数的参数?

时间:2021-04-26 10:47:43

标签: scala functional-programming higher-order-functions

我有一个函数 f 有两个参数 - a:Int 和 b:Int

f (a:Int, b:Int): Int

我希望在 2 元组列表上调用 map - 这样对于列表中的每个元组 (a,b),我希望将其映射到 f(a,b)。 我将如何做? 谢谢

2 个答案:

答案 0 :(得分:3)

有两种方法可以做到这一点。

首先,也许对读者来说最清楚的是,您可以解构 map 中的元组:

val tuples: List[(Int, Int)] = ???  // code to generate the list
tuples.map {
  case (a, b) => f(a, b)
}

第二,您可以将一个函数转换为一个以元组作为输入的函数,.tupled。使用 def 定义的方法必须首先转换为函数:

val tupledF = (f _).tupled
val tuples: List[(Int, Int)] = ??? // code to generate the list
tuples.map(tupledF)

答案 1 :(得分:1)

你可以只做l.map { case (a,b) => f(a,b) }。或者一个聪明的方法:l.map((f _).tupled)

相关问题