上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
结语
有了本章中学到的知识,你应该能够开始用Scala完成小的任务,尤其是脚本。在后续的章节中,我们将更深入介绍这些主题,并引入那些可能在这里完全不会涉及的内容。
[1]这个to方法实际上并不返回一个数组,而是另一种序列,包括了值0、1和2,然后由for表达式遍历。序列和其他集合,会在第17章讲到。
[2]变长参数列表,又叫作重复参数(repeated parameters),将在8.8节介绍。
[3]你不需要写new List,因为scala.List的伴生对象上定义了一个工厂方法,“List.apply()”。你会在4.3节读到更多关于伴生对象的内容。
[4]之所以需要在末尾放一个Nil,是因为::是List类上定义的方法。如果只是写成1::2::3,编译是不会通过的,因为3是个Int,而Int并没有::方法。
[5]尽管从概念上讲可以创建任意长度的元组,目前Scala标准类库仅定义到Tuple22(即包含22个元素的元组)。
[6]由于示例3.6中的集是可变的,我们并不需要对movieSet重新赋值,这就是为什么它可以是val。与此相对应的是,示例3.5中对不可变集使用+=就需要对jetSet重新赋值,因此它必须是var。
[7]在示例3.7中,那段显式的类型参数声明“[Int, String]”是必需的,因为在没有在工厂方法传入任何值的情况下,编译器无法推断出映射的类型。与此相反,在示例3.8中,编译器能够根据传入工厂方法的值推断出类型参数,因此并不需要显式地给出类型参数。
[8]Scala允许对任何对象调用->方法的机制,即隐式转换(impllict conversion),将在第21章中介绍。