Scala 高阶函数和隐式类型

Scala Higher Order Functions and Implicit Typing

我最近开始使用 Scala 中的函数式编程,并在此过程中学习 Scala。在尝试第 2 章的一个练习来定义一个柯里化另一个函数的函数时,我 运行 进入这个:

如果我写

def curry[A,B,C](f: (A,B) => C): A => B => C =
    a: A => b: B => f(a, b)

然后我得到

Chapter2.scala:49: error: ';' expected but ':' found.
a: A => b: B => f(a, b)
_______^
one error found

但是如果我写

def curry[A,B,C](f: (A,B) => C): A => B => C =
    a => b => f(a, b)

然后它编译正常,没有警告,并且可以工作。有什么区别?

您只需将变量括在括号中即可。在你的例子中, 你可以写:

def curry[A,B,C](f: (A,B) => C): A => B => C =
  (a: A) => (b: B) => f(a, b)