MoonBit 语言导览 MoonBit

数组

数组是存储相同类型元素的集合。

可通过数组字面量语法创建数组,即用方括号包裹逗号分隔的元素列表:[1,2,3]

也可使用Array::make函数创建数组,该函数接收长度和元素值作为参数。如示例中Array::make(4,1)将创建等同于[1,1,1,1]的数组。

arr3示例展示了由arr1元素、arr2元素及额外数字组成的数组。方括号中的..arr1语法称为数组展开(array spread),用于将数组元素展开到新数组中。

数组视图

使用array[start:end]语法可获取数组的视图(索引范围包含start但不包含end)。startend参数可省略。视图是原数组的引用,可避免数组复制。

数组可变性

可能注意到我们对未标记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)
}