for循环结构
for i in -99...99{
i*i
}
注:基于c的for循环结构在swift3.0已经取消。
for var a = -6.28 ; a <= 6.28 ; a += 0.1{
sin(a)
}
接下来我会通过掷骰子游戏来说明下面的循环结构的不同以及用法
while循环结构

在while循环条件,可以直接跟一个或多个条件,当满足a赢得次数以及b赢得次数小于3,那么就一直执行while循环
repeat while循环结构
至少执行一次的循环结构,跟do while类似。

我们来优化下这个掷骰子游戏,只要a>b或b>a那么就结束游戏,所以,我们可以采取repeat while来处理,因为这个游戏至少得去玩一盘,只要是平局就继续执行循环。
break和continue
break 立即结束当前循环
continue 结束当前循环的内容,直接执行下一次循环

这里利用了一个死循环,让循环内容无限去执行,通过break和continue来控制循环是否终止。
假如平局,那么就立马跳出当前循环,不再去执行下面的代码了;不是平局,那么就直接break结束循环,输出结果。
控制转移
通过一个列子来说明
求x^4 - y^2 = 15 * x * y在300以内的一个正整数解
思路:通过循环嵌套取x,y在300的值,如果满足公式就打印并结束循环。

第二种做法,在swift中可以将一个循环结构用一个名字来代表。

选择结构
可以利用 if .. else if ... else if .. else ..的形式来处理多个选择
可以用switch来处理。
在swift中,用switch来进行选择结构,每句case后不用跟break
在最后一句default:可以采用break或者()来表示什么都没做

switch的一些用法
1.在case条件语句可以用..<或...区间形式

2.也可以采用元组的形式进行条件语句判断

3.在采取元祖形式进行条件语句判断的时候,可以利用下划线的形式单独判断元组其中一个,也可以利用区间来判断元组元素是否在这个区间

4.在元组形式进行条件语句判断,也可以通过元组解包的形式赋值一个新元组来处理

fallthrough关键字用于告诉case执行完毕后跳入下一个case

guard关键字
举列说明:我去买一样东西,如果我带的钱大于东西价格并且我能装的容量大于了东西容量,那么就可以买,反之不能买。
普通方法处理:

用普通方法处理,有2个嵌套判断,假如今后的业务逻辑更加复杂,那么代码易读性就大大降低。
为此,swift推出了guard关键字,guard else 确保一个条件为真,这样我们就不用去把跟业务逻辑不相干的还要写在一起,显得混乱。

很清晰看的出,采取guard else后,代码条理非常清晰,更加易读。
where用法和模式匹配
通过where关键字来附加限制条件
列1:给出一个点,这个点可能x,y相等,可能x等于-y

列2:给出一个年龄,10到19为青少年
普通做法:

这样做发现代码冗长,不够简练。
简练做法:

通过if case方法就能直接判断一个区间形式了
列3:根据列3附加一个条件限制,大于18的才是青年
同理,采取where来附加限制条件

元组也可以这样操作。
列4:取出1到100之间能被3整除的数
利用let case ,where的形式,我们可以写出非常漂亮的代码

总结:合理通过利用swift各个关键字以及写法,可以实现代码简洁化,易读化,提升了代码质量。
网友评论