我有一个函数 f 有两个参数 - a:Int 和 b:Int
f (a:Int, b:Int): Int
我希望在 2 元组列表上调用 map - 这样对于列表中的每个元组 (a,b),我希望将其映射到 f(a,b)。 我将如何做? 谢谢
答案 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)