Scala 如何定义函数接受当前函数参数?

Scala 如何定义函数接受当前函数参数?,scala,Scala,下面的fn2未能编译 定义fn(x:Int)(y:Int)=x+y 定义fn2(f:((Int)(Int))=>Int)=f fn2(fn)(1)(2)//预期值=3 如何定义fn2以接受fn?应如下所示: scala> def fn2(f: Int => Int => Int) = f fn2: (f: Int => (Int => Int))Int => (Int => Int) scala> fn2(fn)(1)(2) res5: Int

下面的
fn2
未能编译

定义fn(x:Int)(y:Int)=x+y 定义fn2(f:((Int)(Int))=>Int)=f fn2(fn)(1)(2)//预期值=3
如何定义
fn2
以接受
fn

应如下所示:

scala> def fn2(f: Int => Int => Int) = f
fn2: (f: Int => (Int => Int))Int => (Int => Int)

scala> fn2(fn)(1)(2)
res5: Int = 3
(Int)(Int)=>Int
不正确-您应该使用
Int=>Int=>Int
(就像在Haskell中一样)。实际上,curried函数接受
Int
并返回
Int=>Int
函数

另外,您也可以使用
fn2(fn_41;(1)(2)
,因为在前面的示例中传递
fn
只是eta扩展的一种简短形式,请参见。

请不要只说“编译失败”,还要给出编译器错误消息。