Scala编程(第4版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

8.4 函数字面量的简写形式

Scala提供了多个省去冗余信息,更简要地编写函数的方式。你需要留意这些机会,因为它们能帮助你去掉多余的代码。

一种让代码变得更简要的方式是略去参数类型声明。这样一来,前一个filter示例可以写成如下的样子:

Scala编译器知道x必定是整数,因为它看到你立即用这个函数来过滤一个由整数组成的列表(someNumbers)。这被称作目标类型target typing),因为一个表达式的目标使用场景(本例中它是传递给someNumbers.filter()的参数)可以影响该表达式的类型(在本例中决定了x参数的类型)。目标类型这个机制的细节并不重要,可以不需要指明参数类型,直接使用函数字面量,当编译器报错时再加上类型声明。随着时间的推移,你会慢慢有感觉,什么时候编译器能帮你推断出类型,什么时候不可以。

另一个去除源码中无用字符的方式是省去某个靠类型推断(而不是显式给出)的参数两侧的圆括号。在前一例中,x两边的圆括号并不是必需的: