【问题标题】:Pass additional arguments to the function passed in map()将附加参数传递给在 map() 中传递的函数
【发布时间】:2015-07-19 02:23:49
【问题描述】:

我想将一个函数传递给 map(),它需要使用额外的数据(例如作为参数传递给 scala 程序的数据)。

例如:

我有一个清单:

val myList = List(1,2,3,4,5)

乘数值作为命令行参数传递。

val multiplier = args(0) // In this example, let it be 2

我有一个函数

def multiply(a: Int, b: Int) = a*b

现在我想在我的列表上执行 map() 如下:

myList.map(multiply)

这当然行不通,因为 map 只需要一个参数(在这种情况下是列表的元素)。

请帮助我如何将函数传递给使用附加参数的映射。

【问题讨论】:

  • 您可以使用myList.map (_ * multiplier)

标签: scala scala-collections


【解决方案1】:

您可以通过currying 完成此操作

def multiply(a: Int)(b: Int) = a*b
myList.map(multiply(multiplier))

或者,如果 multiply 不是您的方法:

val multiplyCurried = Function.curried(multiply _)
myList.map(multiplyCurried(multiplier))

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 2011-12-21
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    相关资源
    最近更新 更多