我尝试运行以下代码:
val f: (a: Int) => (b: Int) => (c: Int) = a + b + c
在REPL和IntellijIDEA的thread中找到,但它显然无效。
来自REPL:
scala> val f: (a: Int) => (b: Int) => (c: Int) = a + b + c
<console>:1: error: ')' expected but ':' found.
val f: (a: Int) => (b: Int) => (c: Int) = a + b + c
^
任何人都知道为什么?我的scala版本是2.10.1
谢谢
答案 0 :(得分:3)
你写的就像你写的一样:
val a: 5 = 5
你想要的更像是
val f = (a: Int) => (b: Int) => (c: Int) => a+b+c
进一步详细说明REPL将写入
f: Int => (Int => (Int => Int)) = <function1>
因为函数定义是右关联的,所以f的类型可以明确如下
f: Int => Int => Int => Int = (a: Int) => (b: Int) => (c: Int) => a+b+c
如果你明确给出这样的函数类型,编译器不需要有关a,b和c的信息,你可以简单地写一个=&gt; b =&gt; c =&gt;而不是a + b + c。