具有多个参数列表的匿名函数

时间:2016-07-08 20:21:07

标签: scala

我试图在scala中使用多个参数列表声明一个简单的方法。

这两项工作。

scala> def add(a:Int, b:Int) = a+ b
add: (a: Int, b: Int)Int

scala> def add(a:Int)(b:Int) = a + b
add: (a: Int)(b: Int)Int

这不......

scala> val add = (a:Int)(b:Int)=>a + b

<console>:1: error: not a legal formal parameter.
Note: Tuples cannot be directly destructured in method or function parameters.
      Either create a single parameter accepting the Tuple1,
      or consider a pattern matching anonymous function: `{ case (param1, param1) => ... }
val add = (a:Int)(b:Int)=>a + b

但是为什么......我要做的就是分配一个匿名函数,它将多个参数列表赋值给一个值。它适用于单个参数列表但不适用于多个参数列表。

1 个答案:

答案 0 :(得分:7)

在宣布讨论的论点时,只需要语法问题。

scala> val add = (a:Int) => (b:Int) => a + b
add: Int => (Int => Int) = <function1>

scala> add(4)
res5: Int => Int = <function1>

scala> res5(9)
res6: Int = 13

匿名使用示例:

scala> def doit(f: Int => Int => String): String = f(2)(5)
doit: (f: Int => (Int => String))String

scala> doit(a => b => (a+b).toString)
res8: String = 7