1.数组
Swift 数组使用有序列表存储同一类型的多个值。相同的值可以多次出现**在一个数组**的不同位置中。
Swift 数组会强制检测元素的类型,如果类型不同则会报错,Swift 数组应该遵循像Array<Element>这样的形式,其中Element是这个数组中唯一允许存在的数据类型.
1.1数组的创建
swift中数组可以和C语言一样直接进行创建,基本格式为:
var 数组名 = [数组内的数据(用逗号进行隔开)];
如:
注意:这里是用中括号[ ]括起来的,不是花括号 {}
此外,数组还可以进行如下定义:
1.2数组的访问
swift中数组的下标为Index(索引)值,内容为value值.
我们可以通过数组的下标访问数组,基本语法如下:
var 变量名 = 数组名[](里面输入数组对应的索引值,一般从0开始,分别对应数组中各个元素)。
另外,swift中还支持使用.first等名称来访问数组,如:
此外,要是我们想输出数组的每一个元素,那么可以使用以下语句:
1.3数组元素的插入和删除
(1)插入替换
在swift中,如果我们想对数组进行元素的增加,一般我们有以下两种方法,使用append()和insert**()**;
append()对数组是在最后添加,而insert()则是可以指定位置的插入。如:
append()的作用还可以通过数组的直接加减得到:
但在上述写法中,除了数组直接的加减,append和insert均只能加入一个元素,如果我们要加入多个元素,那么就可以使用下列语句:
数组名.insert/append(contentsOf:[添加的元素],(at:))
如:
如果我们想替换数组中的元素而不是插入元素,这时就要使用一个新的语句replaceSubrange(),基本格式为:
数组名.replaceSubrange(要替换的元素位置,with:[替换的元素])
其中替换元素位置可以写多个,也可以写区间形式(区间形式不需要加括号)。
(2)删除
如果我们不小心多插入了元素或者替换错了元素,我们可以用remove()来进行删除。如:
1.4数组的查找
对于一个数组,如果我们想知道他之中有没有我们想要的元素,但又不想一个个的去看,那么我们就可以使用下列语句:
数组名.contains(查找的元素)
如在上面图中我们要查找“大象”是否在数组里面:
返回值为true,代表该元素存在数组里面。如果我们查找该元素所在的Index值,则可以使用下列语句:
同理可以用lastIndex查找最后一个符合条件元素的索引值。
2.集合<set>
集合(Set)是用来存储相同类型、没有确定顺序、且不重复的值。
也就是说当元素顺序不重要时,或者希望确保每个元素只出现一次时,可以使用集合而不是数组。
2.1集合的声明
集合的声明一般有以下两种方法:
var 变量名:set<数据类型> = [元素]//数据类型可不写
var 变量名 = set([元素])
也如果要将数组转换为集合,只需将数组的变量名写入set()中即可,如:
2.2 集合的输出
前面提到过,集合是具有不重复性和无序性,如果我们将上述数组a里面的元素增添一个4,b还是为a的集合,分别对b和a进行输出:
可以发现,b输出的值中只有一个4,且顺序与a不同,如果进行多次输出,b几乎每一次都是不同的顺序,这表明了集合的不重复性和无序性。
2.3集合的运算
因为集合的特性,集合的运算与数组的运算不同,与数学上集合的运算十分相似。
在swift中,我们有以下语句与之对应:
但如果我们不知道a和b的关系,那么就无法准确的对a和b进行运算。
swift中对此也提供了相应的函数来解决这个问题:
3.循环
有的时候,我们可能需要多次执行同一块代码,一个一个敲又过于复杂,这时就需要用到循环语句。
swift中循环有以下几种类型:for..in循环,while循环,repeat...while循环。
3.1 for -in循环
基本语法如下:
for 变量名 in 序列名(也可以直接写区间){}
如:
可见,我们将序列内的所有元素打印了出来,如果我们不想每个都打印,又不想使用条件语句,那么可以使用stride函数,如:
注意:stride(from: ,to:,by:)中对于to中的元素是不包含在内的,相当于开区间,而如果我们想包含在内可以将to改为through。
3.2 while循环
for—in循环一般用于遍历元素,一般从头到尾进行一次,如果我们要进行多次的来回循环,一般使用while循环,基本语法如下:
while 条件 {执行内容
}
如我们要将0到10的偶数打印出来:
3.3 repeat -while循环
repeat-while循环与while循环十分相似,唯一不同的是repeat-while循环时先执行语句,再进行判断,基本语法如下:
repeat{
执行语句
} while 条件
如果我将上述语句中的a赋值为12,放在repeat-while中:
可见,哪怕开始时a已经大于10了,语句仍然先执行了一遍。
此外,在循环体中,若是我们不想让循环走完所有符合的范围(或语句),我们可以使用break(跳出该循环),continue(跳过后面的所有语,进行下一次循环),这样可以简化程序的复杂度。