Swift数组基础

示例

Array是Swift标准库中的有序集合类型。它提供O(1)随机访问和动态重新分配。数组是一种通用类型,因此它包含的值的类型在编译时是已知的。

与Array值类型一样,其可变性是通过将其标注为var(可变)或let(不可变)来定义的。

类型[Int](意味着:包含Ints的数组)是的语法糖Array<T>。

阅读更多有关The Swift Programming Language的数组的信息。

空数组

以下三个声明是等效的:

// 可变的String数组,最初为空。

var arrayOfStrings: [String] = []      // 类型注释+数组文字
var arrayOfStrings = [String]()        // 调用[String]初始化程序
var arrayOfStrings = Array<String>()   // 没有语法糖

数组文字

数组文字用方括号括起来,并用逗号分隔:

// 创建类型为[Int]的不可变数组,其中包含2、4和7
let arrayOfInts = [2, 4, 7]

编译器通常可以根据文字中的元素来推断数组的类型,但是显式类型注释可以覆盖默认值:

let arrayOfUInt8s: [UInt8] = [2, 4, 7]   // 在变量上键入注释
let arrayOfUInt8s = [2, 4, 7] as [UInt8] // 初始化表达式上的类型注释
let arrayOfUInt8s = [2 as UInt8, 4, 7]   // 对于一个元素是显式的,对于其他元素则是推断的

具有重复值的数组

// An immutable array of type [String], containing ["Example", "Example", "Example"]
let arrayOfStrings = Array(repeating: "Example",count: 3)

从其他序列创建数组

let dictionary = ["foo" : 4, "bar" : 6]

// An immutable array of type [(String, Int)], containing [("bar", 6), ("foo", 4)]
let arrayOfKeyValuePairs = Array(dictionary)

多维数组

在Swift中,多维数组是通过嵌套数组创建的:Intis [[Int]](或Array<Array<Int>>)的二维数组。

let array2x3 = [
    [1, 2, 3],
    [4, 5, 6]
]
// array2x3 [0] [1]为2,而array2x3 [1] [2]为6。

要创建重复值的多维数组,请使用数组初始化程序的嵌套调用:

var array3x4x5 = Array(repeating: Array(repeating: Array(repeating: 0,count: 5),count: 4),count: 3)