1. 数组
任何对于对象的值参数应用都将被转换为对apply方法的调用。与之相似的是,当对带有括号并包括一到若干参数的变量赋值时,编译器将对括号里的参数(索引值)和等号右边的对象执行调用。
以数组为例:
val greetString = new Array[String](3)
greetString(0) = "Hello"
greetString(1) = ","
greetString(0) = "world!\n"
for (i <- 0 to 2)
print(greetString(i))
上段代码的实际调用为:
val greetString = new Array[String](3)
greetString.update(0, "Hello")
greetString.update(1, ", ")
greetString.update(2, "world!/n")
for (i <- 0.to(2))
print(greetString.apply(i))
用于生产环境的赋值方法为:
val numNames = Array("zero", "one", "two")
val o = Array(1, "one")
2. 列表
val oneTwoThree = List(1, 2, 3)
2.1 两个方法:
-
:::
实现两个列表叠加并返回新列表的功能,要求左右操作数都是列表 -
::
把新元素组合到现有列表前端。
注意:方法名以:
结尾,右操作数是方法的调用者。所以使用::
时一定要把列表放到右面。
Nil
是空列表的简写,一个建立列表的写法如下:
val oneTwoThree = 1 :: 2 :: 3 :: Nil
List没有提供append
操作是因为随着列表边长,append
的耗时将线性增长,而用::
做前缀操作则仅耗用固定时间。
3. 元组
val pair = (99, "str")
需要说明的是,元组的索引基于1。
3.1 元组与列表的异同:
- 元组可以包含不同类型的元素,而列表不可(我试了试貌似可以?求解答)
- 两者元素都不可变
4. 集(set)和映射(map)
scala里的集合(collection)分为可变和不可变两种类型,没有特别指定导入包时,默认为不可变类型。可变集合将元素加入自身,不可变集合则创建并返回新集合。故,在定义集合时要注意val
, var
的选择。
5. 其他
数组元素可变。列表、元组元素不可变。
网友评论