11

如何在 Scala 中创建匿名和柯里化函数?以下两个失败:

scala> (x:Int)(y:Int) => x*y
<console>:1: error: not a legal formal parameter
       (x:Int)(y:Int) => x*y
              ^

scala> ((x:Int)(y:Int)) => x*y
<console>:1: error: not a legal formal parameter
       ((x:Int)(y:Int)) => x*y
               ^
4

1 回答 1

21

要创建一个 curried 函数,请将其编写为多个函数(实际上就是这种情况;-))。

scala> (x: Int) => (y: Int) => x*y
res2: Int => Int => Int = <function1>

这意味着你有一个从 Int 到一个从 Int 到 Int 的函数。

scala> res2(3)
res3: Int => Int = <function1>

或者你可以这样写:

scala> val f: Int => Int => Int = x => y => x*y
f: Int => Int => Int = <function1>
于 2012-06-15T10:45:39.670 回答