以下是等价的:
scala> val f1 = {i: Int => i == 1}
f1: Int => Boolean = <function1>
scala> val f2 = (i: Int) => i == 1
f2: Int => Boolean = <function1>
我更熟悉前者(来自 Groovy),但后一种形式更常见,AFAIK,在 Scala 中定义函数的标准方法。
我应该忘记过去(Groovy)并采用第二种形式吗?第一种形式对我来说更自然,因为它看起来类似于 Groovy/Ruby/Javascript 定义闭包(函数)的方式
编辑
参见 Zeiger 在这个线程中的回答,例如,groovy/ruby/javascript 闭包{=>}
语法似乎比() =>
我假设两者可以互换使用更自然,具有相同的性能、传递能力等,唯一的区别是语法