Scala是简洁的
Scala程序一般都很短。Scala程序员曾报告说与Java比起来代码行数可以减少到1/10。这有可能是个极限的例子。较保守的估计大概标准的Scala程序应该有Java写的同样的程序一半行数左右。更少的行数不仅意味着更少的打字工作,同样意味着更少的话在阅读和理解程序上的努力及更少的出错可能。许多因素在减少代码行上起了作用。
首先,Scala的语法避免了一些束缚Java程序的固定写法。例如,Scala里的分号是可选的,且通常不写。Scala语法里还有很多其他的地方省略了东西。比方说,比较一下你在Java和Scala里是如何写类及构造函数的。在Java里,带有构造函数的类经常看上去是这个样子:
// 在Java里
private int index;
private String name;
public MyClass(int index, String name) {
this.index = index;
this.name = name;
}
}
在Scala里,你会写成这样:
根据这段代码,Scala编译器将制造有两个私有成员变量的类,一个名为index的Int类型和一个叫做name的String类型,还有一个用这些变量作为参数获得初始值的构造函数。这个构造函数还将用作为参数传入的值初始化这两个成员变量。一句话,你实际拿到了与罗嗦得多的Java版本同样的功能。Scala类写起来更快,读起来更容易,最重要的是,比Java类更不容易犯错。
有助于Scala的简洁易懂的另一个因素是它的类型推断。重复的类型信息可以被忽略,因此程序变得更有条理和易读。
但或许减少代码最关键的是因为已经存在于你的库里而不需要写的代码。Scala给 了你许多工具来定义强有力的库让你抓住并提炼出通用的行为。例如,库类的不同方面可以被分成若干特质,而这些有可以被灵活地混合在一起。或者,库方法可以 用操作符参数化,从而让你有效地定义那些你自己控制的构造。这些构造组合在一起,就能够让库的定义既是高层级的又能灵活运用。