Scala高阶函数和隐式键入

时间:2016-08-23 15:57:40

标签: scala functional-programming type-inference

我最近开始使用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:错误:&#39 ;;'预期,但':'找到。
  a:A => b:B => f(a,b)
  _______ ^
  找到一个错误

但如果我写

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

然后编译好,没有任何警告,并且工作。有什么区别?

1 个答案:

答案 0 :(得分:4)

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

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