今天说一下Swift基本类型中的元组(tuples)、 数组(array)、集合(set)和字典(dictionary)。 其中,数组(array):有序数据集、集合(set):无序,无重复元素的数据集和字典(dictionary):无序键值对数据集,都属于集合(Collection)类型,这些集合类型中存储的数据类型必须明确。如果在定义一个上述集合类型时指定大小,那么集合的容量就不可变了。如果不指定大小,集合就是可变的。
元组(tuples)
元组就是把多个数据组合在一起,构成的为了表示一定意义的复合值。元组中的数据可以是任意类型。文字很抽象,举个例子吧。
(404, "Not Found")
这就是一个元组,类型是(Int,String),它可以描述浏览器请求网页返回的的HTTP状态。
var httpStatus = (404, "Not Found")
//变量httpStatus的类型是(Int,String),值是(404, "Not Found")
元组的组成可以包含任意多个类型的数据,例如:
(Int,String,Double,Bool)
元组内值的访问
let (num, message) = httpStatus
print("status num is \(num)")//输出404
print("status message is \(message)")//输出Not Found
或者定义元组时,就给元组内的元素命名:
var httpStatus = (num: 404, message:"Not Found")
print("status num is \(httpStatus.num)")
print("status message is \(httpStatus.message)")
使用元组可以实现函数的多返回值,在学习函数时会具体举例。
数组(Array)
定义一个数组需要指定存储的数据类型,code:
var sampleArray1 = Array<String>
var sampleArray2 = [String]()
var sampleArray3:[String]=["hi","ha"]
前两种方法都是定义了一个String类型的空数组,第三种定义并赋给初值。 增加元素:
sampleArray.append("nihao")//增加一个元素
sampleArray = []//数组置空,存储的类型仍为String
指定大小的数组
var myArray = [Int](count:3,repeatedValue:0)//包含3个0的数组
数组加法
var array1 = [Int](count:3,repeatedValue:1)
var array2 = [Int](count:3,repeatedValue:2)
var sumArray = array1 + array2
//sumArray会推断为类型[Int],值 [1,1,1,2,2,2]
数组元素的访问
var v1 = sumArray[0]//访问第0个元素
sumArray[0] = 12//修改第0个元素
var arrayCount = sumArray.count//元素个数
var status = sumArray.isEmpty//是否为空,及count==0
sumArray += [1,2,3]//和一个数组做加法
sumArray[2...4] = [0,0]//将第2到第4,这三个元素删除,并插入 [0,0]两个元素sumArray.insert(100,atIntdex:1)//在第一个位置插入100这个值
sumArray.removeAtIndex(1)//删除第一个位置的元素
数组的遍历
//遍历并打印数组中的所有元素
for num in sumArray {
print("element is \(num)")
}
for (index,num) in sumArray.enumerate() {
print(index, num)
}
enumerate是数组的一个方法,可以返回索引值和对应位置的元素
集合(Set)
存入集合的类型必须是可哈希的,如果不懂哈希,请自行查阅or留言。
集合的创建和初始化
var mySet = Set<String>//空集合var
mySet1:Set<String> = ["c","a","b","d"]
var mySet2:Set = ["c","a","b","d"]
mySet.insert(12)
mySet = []//置空
集合元素的访问和修改
var num = mySet.count//元素个数
var status = mySet.isEmpty//是否为空
var element = mySet.remove("c")//从集合中删除元素"c",并返回
//循环遍历
for ele in mySet {
print("element is \(ele)")
}
集合操作
intersect//集合交操作
exclusiveOr//在A集合不再B集合
union//并操作
subtract//不在A中的元素。。。
关于集合的相关操作还有很多,可以在使用的过程中根据需要查询文档。
字典
字典的创建和初始化
var myDict = [Int: String]()//空字典,key为Int类型,value为String类型
mydict[123] = "nihao"//增加一个值
mydict = [:]//置空,类型不变
//指定类型
var yourDict:[Int,String] = [1:"11",2:"22",3:"33"]//不指定类型,可以自动推断类型
var hisDict = [1:"11",2:"22",3:"33"]
字典元素的访问和修改
yourDict[1] = "change 11"//修改key为1所对应的value值
//另一种修改方法
yourDict.updateValue("change again",forKey:1)
//删除存在的key对应的值
yourDict[1] = nil
//或者这样删除
yourdict.removeValueForKey(1)
//字典的遍历
for (key,val) in yourDict {
//do something
print(key,val)
}
//获取所有key值
var allKeys = [int](yourDict.keys)
//获取所有value值
var allValues = [String](yourDict.values)
字典是无序的,可以使用sort()方法对字典的key或value进行排序
今天就到这里,还有关于可选类型,以后用到会介绍,明天学习控制流,if、switch语句、for循环,while循环repeat-while。后天就学习关键的函数了!