为什么允许匿名函数声明,但这不是?

时间:2012-05-08 08:56:53

标签: scala

为什么这样做:

val addOne = {a : Int => a + 1 }

但这不是:

val addOne = a: Int => a + 1

据我所知,两者都声明了一个带有一个输入参数的匿名函数。

2 个答案:

答案 0 :(得分:5)

参数列表必须放在括号中。

val addOne = (a: Int) => a + 1

有关完整语法,请参阅语言规范。

答案 1 :(得分:4)

因为你定义了一个函数并将它赋值给一个值。

{ a: Int => a + 1 }

是已定义的功能。您也可以通过这种方式定义函数:

(a: Int) => a + 1

(a: Int) => { a + 1 }

它是一样的。你只需要用括号包装参数列表,如果你不想使用paranthese来表示空洞表达式,就可以使它工作。