数组
数组是存储相同类型元素的集合。
可通过数组字面量语法创建数组,即用方括号包裹逗号分隔的元素列表:[1,2,3]
。
也可使用Array::make
函数创建数组,该函数接收长度和元素值作为参数。如示例中Array::make(4,1)
将创建等同于[1,1,1,1]
的数组。
arr3
示例展示了由arr1
元素、arr2
元素及额外数字组成的数组。方括号中的..arr1
语法称为数组展开(array spread),用于将数组元素展开到新数组中。
数组视图
使用array[start:end]
语法可获取数组的视图(索引范围包含start但不包含end)。start
和end
参数可省略。视图是原数组的引用,可避免数组复制。
数组可变性
可能注意到我们对未标记mut
的数组arr1
执行了push
操作。这是因为数组元素的 mutability 由数组类型自身决定。let
声明中的mut
关键字仅控制变量名能否被重新赋值。
若尝试将arr1
重新赋值为其他数组(如arr1 = [1,2,3]
),将触发编译错误。
fn main {
let arr1 : Array[Int] = [1, 2, 3, 4, 5]
let arr2 = Array::make(4,1)
println(arr1.length()) // get the length of the array
println(arr1[1]) // get the second element of the array
// We can also use the spread operator to concatenate arrays.
let arr3 = [..arr1, 1000, 2000, ..arr2, 3000, 4000]
println("spread arrays:")
println(arr3)
let view : ArrayView[Int] = arr1[1:4]
println("array view:")
println(view)
println("view[0]:")
println(view[0])
arr1.push(6) // push an element to the end
println("updated array:")
println(arr1)
}