Как я могу создать карри анонимную функцию в Scala?
Как я могу создать анонимную и карри функцию в 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
^
1 ответ
Решение
Чтобы создать функцию с карри, напишите ее так, как если бы это было несколько функций (это действительно так;-)).
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>