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

Scala 具有多个参数列表的匿名函数,scala,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 lega

我试图在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
scala>valadd=(a:Int)(b:Int)=>a+b
:1:错误:不是合法的形式参数。
注意:元组不能在方法或函数参数中直接解构。
创建一个接受Tuple1的参数,
或者考虑一个匹配匿名函数的模式:{{(PARAM1,PARAM1)=>…}。
val add=(a:Int)(b:Int)=>a+b

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

在声明当前参数时,只是语法问题

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

咖喱会迟一点来。我想要一个具有多参数列表的匿名函数。类似于
def foo(x:Int)(y:Int)
这适用于def,但在将匿名函数分配给val时不起作用。多参数列表正在出现。这只是描述同一事物的两种不同方式。而
=
符号右边的所有东西,作为一个整体,都是一个匿名函数。我添加了一个匿名使用的示例。
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