今天用到的Markdown语法
Blockquotes
Right angle brackets > are used for block quotes.
Swift语言提供了Arrays、Sets和Dictionaries三中基本的集合类型来存储集合数据。Arrays(数组)饰有序的数据的集合,Sets(集合)饰无序无重复数据的集合,Dictionaries (字典)是无序的键值对的集合。
集合的可变性(Multability of Collections)
如果创建一个Arrays、Sets和Dictionaries并且把它分配成一个变量,这个集合是可变化的,就是说我们可以对集合内的数据进行操作,增删改。如果我们把集合分配给一个常量,那么它就是不可变化的。
数组
数组使用有序列表存储同一类型的的多个值,相同的值可以在数组中出现多次。
注意:Swift的Array类型被桥接到Foundation中的NSArray类,更多关于Foundation和Cocoa中使用Array的信息,参见 Using Swift with Cocoa and Obejective-C 一书
数组的简单语法
写swift数组应该遵循像Array<Element>这样的形式,其中Element饰这个数组中惟一允许存在的数据类型,我们也可以使用[Element]这样简单的语法,但是推荐是用简单的那种。
创建一个数组
我们可以使用构造语法来创建一个由特定的数据类型构成的空数组:
var someInts = [Int]()
print("someInts is of type [Int] with \(someInts.count) items.")
//someInts is of type [Int] with 0 items."
我们通过构造函数,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 threeDoubles = Array(count: 3, repeatedValue: 0.0)
var anotherThreeDouble = Array(count: 3, repeatedValue: 2.5)
var sixDouble = threeDoubles + anotherThreeDouble
//sixDouble被推断为[Double],等价于[0.0,0.0,0.0,2.5,2.5,2.5]
用字面量构造数组
我们可以使用字面量来进行数组构造,这是一种用一个或者多个数值构造数组的简单方法。字面量是一系列由逗号分隔并且方括号内包含数值:
[value1,value2,value3]
通过下面的例子创建一个叫shoppingList并且存储String的数组:
var shoppingList: [String] = ["Eggs","Milk"]
初始化了一个包含String类型的数组,并且初始化。
访问和修改数组
我们可以通过数组的方法和属性来访问和修改数组,或者使用下标语法
可以使用数组的只读属性count来获取数组中得数据项数量:
var shoppingList: [String] = ["Eggs","Milk"]
声明一个包含String类型的数组,里面有两个值["Eggs","Milk"]
print("The shopping list contains \(shoppingList.count) items.")
可以用只读属性count来获取数组项目的数量
if shoppingList.isEmpty {
print("The shoppingList is empty.")
} else {
print("The shoppingList is not empty.")
}
可以用isEmpty属性来检查count属性的值是否是0
shoppingList.append("Flour")
可以使用append方法在数组后面添加新的数据项,或者用下面的+=的方法,也可以在数组后面直接添加一个或者多个有相同类型的数据项
shoppingList += ["Baking Powder"]
shoppingList += ["Chocolate Spread","Cheese","Butter"]
可以用索引值放在方括号中获取所对应的数据项目,注意索引值是从0开始的。
var firstItem = shoppingList[0]
可以直接对索引选出来得项目进行赋值,本身有值就是对其进行修改
shoppingList[0] = "Six eggs"
本来数组是这么多值,["Eggs", "Milk", "Flour", "Baking Powder", "Chocolate Spread", "Cheese", "Butter"],但是下面一行对索引是4到6的进行了修改,不仅改变了所对应的值,也改变了数组的大小,
变成了["Six eggs", "Milk", "Flour", "Baking Powder", "Bananas", "Apples"]
shoppingList[4...6] = ["Bananas","Apples"]