创建一个空数组
使用构造语法来创建一个由特定数据类型构成的空数组:
var array = [Int]()
print("\(array.count).count")
通过构造函数的类型,array的值类型被推断为[Int]。
创建一个带有默认值的数组
Swift 中的Array类型还提供一个可以创建特定大小并且所有数据都被默认的构造方法。把准备加入新数组的数据项数量(count)和适当类型的初始值(repeatedValue)传入数组构造函数:
var three = [Double](count: 3, repeatedValue:0.0)
// three 是一种 [Double] 数组,等价于 [0.0, 0.0, 0.0]
通过两个数组相加创建一个数组
使用加法操作符(+)来组合两种已存在的相同类型数组
var three = [Double](count: 3, repeatedValue: 0.0)
var anoth = [Double](count: 2, repeatedValue: 1.0)
var otherArray = three + anoth
print("\(otherArray)")//输出[0.0, 0.0, 0.0, 1.0, 1.0]
用字面量构造数组
var arrayStr:[String] = ["a","b","c"]
print("\(arrayStr.count)")
arrayStr变量被声明为“字符串值类型的数组“,记作[String]。 因为这个数组被规定只有String一种数据结构,所以只有String类型可以在其中被存取。
访问和修改数组
我们可以通过数组的方法和属性来访问和修改数组,或者使用下标语法。
使用数组的只读属性count来获取数组中的数据项数量.
使用append(_:)方法在数组后面添加新的数据项:
arrayStr.append("d")
print("\(arrayStr)")//["a", "b", "c", "d"]
除此之外,使用加法赋值运算符(+=)也可以直接在数组后面添加一个或多个拥有相同类型的数据项:
arrayStr += ["e","f"]
print("\(arrayStr)")//["a", "b", "c", "d", "e", "f"]
直接使用下标语法来获取数组中的数据项,把我们需要的数据项的索引值放在直接放在数组名称的方括号中:
var str = arrayStr[3]
print("\(arrayStr)")//d
用下标来改变某个已有索引值对应的数据值:
arrayStr[4] = "g"
print("\(arrayStr)")//["a", "b", "c", "d", "g", "f"]
调用数组的insert(_:atIndex:)方法来在某个具体索引值之前添加数据项:
arrayStr.insert("h", atIndex: 1)
print("\(arrayStr)")//["a", "h", "b", "c", "d", "g", "f"]
类似的可以使用removeAtIndex(_:)方法来移除数组中的某一项
let mapleSyrup = arrayStr.removeAtIndex(0)
// 索引值为0的数据项被移除
// arrayStr 现在只有6项,而且不包括 a
// mapleSyrup 常量的值等于被移除数据项的值 "a"
如果对索引越界的数据进行检索或者设置新值的操作,会引发一个运行期错误。可以使用索引值和数组的count属性进行比较来在使用某个索引之前先检验是否有效。除了当count等于 0 时(说明这是个空数组),最大索引值一直是count - 1,因为数组都是零起索引.
数组的遍历
使用for-in循环来遍历所有数组中的数据项:
for item in arrayStr
{
print("\(item)")
}
//h
//b
//c
//d
//g
//f
如果需要每个数据项的值和索引值,可以使用enumerate()方法来进行数组遍历。enumerate()返回一个由每一个数据项索引值和数据值组成的元组。把这个元组分解成临时常量或者变量来进行遍历:
for (index,value) in arrayStr.enumerate()
{
print("Item \(String(index + 1)): \(value)")
}
//Item 1: h
//Item 2: b
//Item 3: c
//Item 4: d
//Item 5: g
//Item 6: f