参考
《Scala 编程》
使用类型参数化数组
参数化的意思是在创建实例的同时完成对它的基本’设置’
下面生成一个 array 实例,含有三个元素的 array
scala> val greetStrings:Array[String] = new Array[String](3)
greetStrings: Array[String] = Array(null, null, null)
同样,由于 scala 的类型推断,可以简写成下面的形式,不过还是建议写上
scala> val greetStrings = new Array[String](3)
Note: 值得注意的是,虽然此 array 实例为 val 类型,不能再改变其大小为 3 的事实,但是其中的三个元素的值是可以改变的
继续简洁的话,还可以这样:
scala> val numNames = Array("zero", "one", "two")
numNames: Array[String] = Array(zero, one, two)
这里是也是使用了下面要说到的 apply
方法
关于 array 元素的访问,跟其他语言不同的是,scala 使用的圆括号
scala> numNames(0)
res0: String = zero
scala> numNames(1)
res1: String = one
上面说到的,数组元素的值是可以改变的
scala> numNames(0)="six"
scala> numNames(0)
res3: String = six
说到为什么使用圆括号的问题,是因为数组也是一个实例,在使用圆括号访问元素 numNames(0)
时,scala 会自动将其转换成 numNames.apply(0)
,同样,修改值时也只是调用了 update
方法,我们使用的时候只是省略了方法名而已
操作符含义
从 scala 的技术层面上来讲,其已经没有了我们根深蒂固的操作符(+、-、*、/等),在这里,这些操作符都变成了方法调用
如上图所示,1+2
,实际上是 (1).+(2)
使用 List
跟 array 不同的是,List 一旦定义,长度和值都将固定,其他对其的操作,本质上都是复制新建了一个新的 list 进行处理返回的结果,其本身是不变的
定义格式为
scala> val one = List(1)
one: List[Int] = List(1)
scala> val two = List(2)
two: List[Int] = List(2)
List 有两种常用的方法,一个是 :::
,叠加方法
scala> val onetwo = one ::: two
onetwo: List[Int] = List(1, 2)
另外一个是 ::
,读音为cons
,表示在原列表前插入元素并返回新列表
scala> val onetwothree = 1 :: onetwo
onetwothree: List[Int] = List(1, 1, 2)
Note:虽然使用 ::
方法的时候,1 写在了前面,但是方法的调用者还是 onetwo 列表,onetwo.::(1)
使用元组 tuple
元组的特别之处在于能包含不同类型的元素
scala> val tu = (1, "hello")
tu: (Int, String) = (1,hello)
访问的时候有点特殊,但还是方法的调用而已
scala> tu._1
res4: Int = 1
scala> tu._2
res5: String = hello
最后
看完这一章,懂了挺多原理上的东西,挺好,关于文件读写的觉得放到后面会比较好,或者遇到了再学习