控制转移语句能够改变程序的执行顺序,可以实现程序的跳转。Swift有3种控制转移语句: continue、break、fallthrough。
continue语句用来告诉循环体中止现在的操作,然后开始迭代下一个循环。但不会离开循环体。在for-condition-increment循环中,continue语句
结束本次循环,跳过循环体中尚未执行的语句,接着执行终止条件的判断, 以决定是否继续循环。对于for语句,在进行终止条件的判断前,还要先执行迭代语句。
在循环体中使用continue语句有两种方式可以带有标签,也可以不带标签。语法格式如下:
continue // 不带标签
continue label // 带标签,label是标签名
下面我们先来学习一下不带标签的continue语句。
1 | for i in 1…10{ 2 | if i%2==0{ 3 | continue 4 | } 5 | print("i的值:(\i)") 6 | } |
输出结果:
i的值:1
i的值:3
i的值:5
i的值:7
i的值:9
在上述程序代码中,当满足条件i%2==0的时候,则执行continue语句,continue语句会终止本次循环, 循环体中continue之后的语句将不再执行,接着进行下次循环, 所以输出结果中不会出现1到10之间的偶数。
接下来我们来看一下带标签的continue语句,定义标签的时候后面要跟一个冒号。不带标签的continue语句会终止本次循环。而带标签的continue语句会跳出其后面指定标签语句。
带标签的continue语句示例代码如下:
1 | var index = 0 2 | var item = 5 3 | labelA: for index in 1..<5{ 4 | labelB: for item in 2...6{ 5 | if item == index { 6 | continue labelA 7 | } 8 | print("(index,item)=\(index,item)") 9 | } 10 | } |
程序运行结果如下:
(index,item)=(1, 2)
(index,item)=(1, 3)
(index,item)=(1, 4)
(index,item)=(1, 5)
(index,item)=(1, 6)
(index,item)=(3, 2)
(index,item)=(4, 2)
(index,item)=(4, 3)
在不使用表标签的情况下,continue只会跳出最近的内循环也就是第4句代码的for循环,如果要跳出代码第3行的外循环,可以为外循环添加一个标签labelA:,然后在第6行的continue语句后面指定这个标签labelA,这样当条件执行continue语句时 ,程序就会跳转出外循环了。