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)
我最近开始使用 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)