1、Array
变量初始化:
方括号中为类型,后面跟圆括号为参数
这里虽然 greetStrings 是val,但是其中的element是可以被另外赋值的,val只是说这个变量只能是Array[String](3)的对象了。所以array本身仍是mutable。
另外一种初始化的方式
其实是使用了一个叫 apply的 factory method,apply方法在 Array的伴生对象 companion object中定义。
这种写法等同于
2、List
scala中的List是immutable的
初始化:
more:
这里 最后 ::Nil 是必须的,否则编译器不知道它是list
一般的,在 a operator b时,可以看做是 a.operator(b),而有 :的时候,以 右边为主,a :: b 应看做 b.:: (a)
3、Tuple
tuple和list一样是immutable,但是tuple里面的element类型不必相同。获取里面的元素只要只用 ._1 这种下标就好。而不能使用想array或list的 (0)形式,主要是因为tuple每个元素类型都可能不一样。
4、Set
extend不同的trait,分为 immutable 和 mutable
下面的代码,对jetSet进行了重新赋值, jetSet + "Lear" 其实新产生了一个 set,这个新的set赋给了jetSet
mutable set: 没有产生新的set。 += 则是 一个method,可以写成 .+= 。immutable set 则不具备这个method。
5、Map
同样的,map也分为 immutable 和 mutable。默认不用import的是 immutable
初始化
形如 1 -> "Go to island." 其实是 ->方法在1上的使用,即 (1).->("Gotoisland.")
6、提倡使用val和immutable变量
减少vars,mutable和 function side effect
The reason Scala en- courages a functional style, in fact, is that the functional style can help you write more understandable, less error-prone code.