基本的数组结构Array:
var shoppingList: String[] = ["Eggs", "Milk"]
这个shoppingList和传统意义上的数组是没区别的。但它却又可以这样:
println("The shopping list contains \(shoppingList.count) items.")
shoppingList.count的这个count是T(继承自ArrayType)的属性,可以获取当前数组的长度。
同时,shoppingList还可以通过 append(只能添加单个元素)或者+=(可添加一个或者多个元素)运算符添加新元素。
var shoppingList: String[] = ["Eggs", "Milk"] shoppingList.append("Banana") shoppingList += "Apple" shoppingList += ["WaterMelon","Tomato"]
也可以直接通过下标来替换一个或者多个元素
var shoppingList: String[] = ["Eggs", "Milk"] shoppingList.append("Bananas") shoppingList += "Apples" shoppingList += ["WaterMelons","Tomatos","Chocolate"] shoppingList += ["",""] shoppingList[7...8] = ["Cola","Cookies"]
可以通过下标来获取指定位置的一个或者多个元素
var firstElement = shoppingList[0] var mulElements = shoppingList[4...6]
在指定位置插入新元素
shoppingList.insert("Cheese",atIndex: 4) for item in shoppingList{ println(item); }
移除元素有2种方法,1,直接移除数组最后一个元素。 2,移除指定下标位置的元素
shoppingList.removeLast() for item in shoppingList{ println(item); } shoppingList.removeAtIndex(0) for item in shoppingList{ println(item); }
如果想移除数组中的某个指定的元素,没有直接的方法。只能遍历并移除:
for (index,value) in enumerate(shoppingList){ println("Item \(index+1): \(value)") if(value == "Bananas"){ shoppingList.removeAtIndex(index); } }
其实这个方法按微软的说法的话,是不够严谨的。removeAtIndex方法执行后,返回值是一个T类型。应该是shoppingList的一个copy,应该是不可以影响到当前操作的数组的。我跟踪了一下,事实上这个方法目前是会影响到当前的数组的。
数组初始化
可以直接初始化指定数据类型的空数组,留着后面再填充数据。
var someInts = Int[]() println("someInts is of type Int[] with \(someInts.count) items.")
可看到输出的结果为0个items在数组中。
也可以直接指定大小的空数组,同时指定初始化数据:
var threeDoubles = Double[](count:3, repeatedValue:0.0) println("threeDoubles is of type Double[] with \(threeDoubles.count) items")
可以看到,当前数组中有3个值都是0.0的item. 这个跟T类型的构造函数有关:
init(count: Int, repeatedValue: T)
总结:
1)swift的数组是通过[]来定义数据类型,()来指定数据的。
2)可以通过insert,append和+=操作符添加数组
3)也可以通过构造函数init(count: Int, repeatedValue: T)来初始化指定大小和初始值的数组
4)可以通过removeLast和removeAtIndex来移除指定的item
5)可以通过下标来获取或者设置指定的item
var shoppingList: String[] = ["Eggs", "Milk"] shoppingList.append("Bananas") shoppingList += "Apples" shoppingList += ["WaterMelons","Tomatos","Chocolate"] shoppingList += ["",""] shoppingList[7...8] = ["Cola","Cookies"] var firstElement = shoppingList[0] var mulElements = shoppingList[4...6] shoppingList.insert("Cheese",atIndex: 4) // for item in shoppingList{ // println(item); // } shoppingList.removeLast() // for item in shoppingList{ // println(item); // } shoppingList.removeAtIndex(0) // for item in shoppingList{ // println(item); // } for (index,value) in enumerate(shoppingList){ println("Item \(index+1): \(value)") if(value == "Bananas"){ shoppingList.removeAtIndex(index); } } var someInts = Int[]() println("someInts is of type Int[] with \(someInts.count) items.") var threeDoubles = Double[](count:3, repeatedValue:0.0) println("threeDoubles is of type Double[] with \(threeDoubles.count) items") //println("The fruits are \(mulElements.count) at position 4-6 in shopping list") //println("The shopping contains \(shoppingList.count) items")