Vam*_*msi 1 scala scala-collections
我想将一个函数传递给map(),它需要使用额外的数据(例如作为参数传递给scala程序的数据).
例如:
我有一个清单:
val myList = List(1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)
并将乘数值作为命令行参数传递.
val multiplier = args(0) // In this example, let it be 2
Run Code Online (Sandbox Code Playgroud)
我有一个功能
def multiply(a: Int, b: Int) = a*b
Run Code Online (Sandbox Code Playgroud)
现在我想在我的List上执行map(),如下所示:
myList.map(multiply)
Run Code Online (Sandbox Code Playgroud)
当然这不起作用,因为map只需要一个参数(在本例中是list的元素).
请帮助我如何传递函数来映射哪些使用其他参数.
你可以用currying来做到这一点
def multiply(a: Int)(b: Int) = a*b
myList.map(multiply(multiplier))
Run Code Online (Sandbox Code Playgroud)
或者,如果multiply不是您的方法:
val multiplyCurried = Function.curried(multiply _)
myList.map(multiplyCurried(multiplier))
Run Code Online (Sandbox Code Playgroud)