一. if
if后面的条件可以省略小括号,条件后面的大括号不可以省略。
if后面的条件只能是Bool类型。
二. while
repeat-while相当于C语言中的do-while。
这里不用num--,是因为从Swift3开始,去除了自增(++)、自减(--)运算符。苹果感觉⾃增、自减运算符不好,所以现在我们使⽤num+= 1,或者 num-= 1。
++是⾃增运算符,粗略的看 i++和 i= i+1是⼀个意思,但区别在于 i++ 是先使⽤i的值 然后再使 i+1 ⽽ i = i+1 只是简单的给 i 加1,⽐如 i = 2 ;j = i ++ 执⾏过后 j = 2,i 再加1,最后 i= 3 。
i= i+1 和 i +=1 是⼀样的,完全相同。
三. for
在OC中我们使用三段式for循环,在Swift中我们使用for in区间运算符。
1. 区间
- 闭区间运算符:a...b, a <= 取值 <= b
- 半开区间运算符:a..<b, a <= 取值 < b
- 单侧区间:让区间朝一个方向尽可能的远
- 区间运算符用在数组上
2. 区间类型
字符、字符串也能使用区间运算符,但默认不能用在for-in中,如下:
3. 带间隔的区间值
四. switch
case,default后面不能写大括号(OC中是可写可不写)。
默认可以不写break,不会贯穿到后面的条件。
使用fallthrough可以实现贯穿效果,如下:
- switch注意点
switch必须要保证能处理所有情况:
case、default后面至少要有一条语句,如果不想做任何事,加个break即可。
如果能保证已处理所有情况,也可以不必使用default:
- 复合条件
switch也支持Character、String类型
如上,使用fallthrough可以达到复合条件的效果,另外条件之间使用逗号分隔也可以实现复合条件。
- 区间匹配、元组匹配
可以使用下划线 _ 忽略某个值。
关于case匹配问题,属于模式匹配(Pattern Matching)的范畴,以后会再次详细展开讲解(重载~=运算符,来⾃定义匹配规则)。
- 值绑定
必要时let也可以改为var。
- where
where不但可以用在switch中,也可以用在for循环中。
- 给循环添加标签
在内循环内部使用外循环标签,可以达到内循环控制外循环的目的。