数组
数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。
数组构造语句
我们可以使用字面量来进行数组构造,这是一种用一个或者多个数值构造数组的简单方法。字面量是一系列由逗号分割并由方括号包含的数值。[value 1,value 2,value 3]
。
下面这个例子创建了一个叫做shoppingList
并且存储字符串的数组:
var shoppingList: [String] = ["Eggs","Milk"]
// shoppingList 已经被构造并且拥有两个初始项。
由于 Swift 的类型推断机制,当我们用字面量构造只拥有相同类型值数组的时候,我们不必把数组的类型定义清楚。shoppinglist
的构造也可以这样写:
var shoppingList = ["Eggs","Milk"]
多个类型存储到统一数组时,数组默认为AnyObject类型
var shoppingList = ["Eggs",123,12.5, true]
访问和修改数组
我们可以通过数组的方法和属性来访问和修改数组,或者下标语法。
shoppingList.isEmpty() shoppingList.count shoppingList.append("Flour") shoppingList += ["Baking Power"]
var firstItem = shoppingList[0] shoppingList[0] = "Six eggs" shoppingList[4..6] = ["Bananas","Apples"] shoppingList.insert("Maple Syrup",atIndex:0) let mapleSyrup = shoppingList.removeAtIndex(0) let apples = shoppingList.removeLast()
数组的遍历
for item in shoppingList { println(item) }
for (index,value) in enumerate(shoppingList) { println("Item \(index + 1): \(value)") }
创建并且构造一个数组
我们可以使用构造语法来创建一个由特定数据类型构成的空数组:
var someInts = [Int]()
someInts.append(3) // someInts 现在包含一个INT值 someInts = [] // someInts 现在是空数组,但是仍然是[Int]类型的。
Swift 中的Array
类型还提供一个可以创建特定大小并且所有数据都被默认的构造方法。我们可以把准备加入新数组的数据项数量(count
)和适当类型的初始值(repeatedValue
)传入数组构造函数:
var threeDoubles = [Double](count: 3,repeatedValue:0.0)
// threeDoubles 是一种 [Double]数组,等于 [0.0,0.0,0.0]
因为类型推断的存在,我们使用这种构造方法的时候不需要特别指定数组中存储的数据类型,因为类型可以从默认值推断出来:
var anotherThreeDoubles = Array(count: 3,repeatedValue: 2.5)
// anotherThreeDoubles is inferred as [Double],and equals [2.5,2.5,2.5]
最后,我们可以使用加法操作符(+
)来组合两种已存在的相同类型数组。新数组的数据类型会被从两个数组的数据类型中推断出来:
var sixDoubles = threeDoubles + anotherThreeDoubles
// sixDoubles 被推断为 [Double],2.5]
示例代码:
var shoppingList: [String] = ["eggs","milk"]
var shoppingList2 = ["eggs","milk"]
shoppingList2[0] = "vege"
println("The shop List contains \(shoppingList.count) items")
if shoppingList.isEmpty{
println("shoppingList is empty")
}else{
println("shoppingList is not empty")
}
shoppingList.append("food")
println("\(shoppingList.count)")
var firstList = shoppingList[0]
println("\(firstList)")
shoppingList.insert("vege",atIndex: 0)
//let mable = shoppingList.removeAtIndex(1)
//shoppingList.removeAtIndex(shoppingList.count-1)
//shoppingList.removeLast()
for item in shoppingList{
println(item)
}
for (index,value) in enumerate(shoppingList){
println("index is \(index) value is " + value)
}
var someInts2:[Int] = [1,2,3,4,5]
var someInts = [Int]()
println("\(someInts.count)")
someInts.append(3)
someInts = []
var threeDoubles = Array(count: 3,repeatedValue: 0.2)