转载自:http://blog.csdn.net/bwf_erg/article/details/70858865
数组是由一组类型相同的元素构成的有序数据集合。数组中的集合元素是有
序的,而且可以重复出现。
在Swift语言中,数组的类型格式为:
Array<ElementType>或[ElementType]
其中Array<ElementType>中的ElementType表示数组的类型,< ElementType >是泛型写法。[ElementType]是一种简写方式。两者表示的功能是一样的,我们更偏向于使用简写形式,本书里所有数组类型都是使用简写形式。
下面我们来创建一个String类型的数组
1 | var strArray1: Array<String>
2 | let strArray2: [String]
在声明一个数组的时候可以使用let和var进行修饰,其中let表示不可变数组,var表示可变数组。
第1行代码声明了一个类型为Array<String>的可变数组strArray1。<String>是泛型,说明在这个数组中只能存放字符串类型的数据。
第2行代码声明了一个类型为[String]的不可变数组strArray2。[String]也是声明一个只能存放字符串类型的数组。
接下来我们来学习如何创建一个空数组。
1 | var emptyStrs= [String]()
2 | let emptyInts = [Int]()
创建一个数组需要对数组进行声明和初始化。上述第1行代码我们创建了一个String类型可变空数组emptyStrs。其中我们var声明表示该数组是可变数组,中括号[]里面的值String表示数组的类型。[String]()是对数组进行初始化,只不过没有任何元素。
第2行代码与第1行代码同样是创建一个空数组emptyInts,区别在于我们用let声明了一个不可变数组,该数组的类型是Int类型。let声明的数组是不可变数组,必须在声明的同时进行初始化,一旦初始化,就不可以被修改。
最后我们来学习如何创建非空数组。示例代码如下:
1 | var strArray1: Array<String> = ["hello","Swift"]
2 | var strArray2: [String] = ["hello","swift"]
3 | let strArray3 = ["hello","swift",15]
上述代码都是对数组进行声明和初始化,数组的类型是通过冒号(:)指明数组的类型。数组中的元素由一对中括号([])括起来,数组中的元素之间用逗号分隔。
第1行代码是使用标准模板方式声明是一个String类型的可变数组strArray1,并初始化值为["hello","swift"]。其中尖括号<String>表示数组的类型,表示strArray1只能存放String类型的元素。
第2行代码是采用简写形式显式声明可变数组strArray2。[String]表示数组的类型,表示strArray2只能存放String类型的元素。
第3行代码声明了一个不可变数组,这里没有指明数组的类型,采用的是隐式推断。根据初始化数组的值推断出数组的类型。在strArray3数组中我们存放了String类型的"hello","swift"以及Int类型的15。在没有明确指定数组类型,我们可以在数组中存放不同类型的元素。
不可变数组在访问效率上比可变数组要高,可变数组通过牺牲访问效率换取可变。当我们可以确定数组是不需要修改的,我们应该将它声明为let。如果数组内容需要改变。我们需要将它声明为var。
此外,如果数组中存储多个相同的元素,我们可以通过以下方法快速创建该数组:
1 | var threeDoubles = Array(repeating: 0.0, count: 3)
此时threeDoubles数组的内容为[0.0,0.0,0.0]