在Swift里面,则有三种的回圈,如下所述:
这种写法的回圈,我都会给它一个我自己的命名,叫「後缀回圈」,因为它的条件是写在後面,而先给前面的动作执行重复内容。所以要我来描述的话,大概会长这样:
重复打印number这个动作、number也会在这个回圈内不停的加2,直到number到9这个限制为止,整个回圈结束。
所以就理解上,这个程序就是把条件往後放了,让它在执行的时候条件在後面执行。
不过,回圈这件事情,虽然作为决定流程的一种方式,它还有很多延伸出来的功能,如能跳离回圈的break、继续执行回圈内容的continue、多重回圈(exiting mutiple loop)、无限循环回圈(infinite loop)等。
回圈中有一个很重要的概念,就是控制转移语句,它可以决定整个流程要如何的进行,而回圈中最常见的就是continue、break两者:
continue we’re saying “I’m done with the current(当前的) run of this loop” – Swift will skip the rest of the loop body, and go to the next item in the loop.
But when we say break we’re saying “I’m done with this loop altogether, so get out completely.”
只要在continue的指令下,就会马上的跳过这个循环圈,也就会变成上面这样,只要是3的倍数,就会被跳过,所以打印出来的就都是3的倍数以外的数字了。
到10就没有了。
这两种用法、概念其实在程序语言中很常见,尤其是用在回圈上。
“as soon as the combination is found, exit all the loops at once”
假若你今天遇到一种情况,这种情况是会需要很多回圈一起进行的时候:
你会需要这个「Outerloop」这个标签,它代表了整个回圈,而不是只有第一行的那个而已。
在上述的程序码中,我们试图要找到一种符合[“Sam”,”Austin”,”MJ”]三个名字的组合,所以第一个、第二个、第三个回圈分别都执行,并放在attempt这个常数里面,假如attempt跟combination相等,那就打印出符合combination的组合,一旦找到了,就直接跳出整个回圈。
所以假若没有使用Outerloop这个回圈的话,我们可能要多放两次的break,多麻烦啊!一个Outerloop满足三个愿望!
当你的回圈并没有明确的设定停损点的时候,就会产生这种疯狂执行的情况….这个叫做无限循环回圈,所以通常看要不是条件设多一点,可以跳出回圈,再不然就是用个break或continue来调整一下整个回圈的设置。
控制转移语句除了上面描述的continue、break之外,还有fallthrough,但fallthrough比较特别,它只能用在Switch case的使用中,大致上意义如下:
fallthrough的主要意义,我想引用Swift起步走的说法就是:
Swift 的switch中,只要比对到一个case即会执行其内的程序,并结束这整个switch的动作,如果在特殊情况下需要执行紧接着的下一个case内的程序,就要用到fallthrough。
也就是说:一般的Switch case,会在匹配到符合条件的设置後,就跳出程序进行的结果,
而,加上fallthrough後,就会变成紧接着下一个case的内容也要执行,如下:
既然都提到控制转移语句了,不得不提到Return,它算是一种最常见的控制转移语句,那它作为一种控制转移语句,实质上的意思是什麽呢?
return语句用於在函数或方法的实现中将控制权传递给调用者,接着程序将会从调用者的位置继续向下执行。
使用return语句时,可以只写return这个关键词,也可以在return後面跟上表达式,像下面这样:
return
return expression
换句话说,就是return语句可以回传值,也可以不回传东西,但回传一种程序执行完成的控制权:
当只写return时,仅仅是将控制权从该函数或方法传递给调用者,而不返回一个值。(这就是说,该函数或方法的返回类型爲Void或())
所以,return出现的时候,通常是要回传一个值、一个字串….诸如此类的,也有可能是代表程序这区块执行完毕,将控制权交还给编译人员。
综合上述,其实控制转移语句都是一种具有强制性的执行机构,它可以直接的跳过当前的执行项目(continue)、跳离整个程序(break)、无缝接轨的继续下一个case(Switch case的fallthrough)、返回值或控制权(return)。
这四个项目是目前Swift中,会使用的控制转移语句。
铁人赛
>>: [DAY04] 建立 Datastore 和 Dataset (下)
昨晚群组热烈的讨论鱼排,从土魠鱼排、澎湖白金土魠鱼排、白鲳、鮸鱼、嘉鱲等等,让人好想来块煎的恰恰的鱼...
或许有人会说:「离职前就给他摆烂,什麽都不要做,以後主管打电话来讨档案,也不要接,反正我不在这间公司...
接着 input 输入的各种功能才可以制作介面互动 所以这边我们使用套件input npm i in...
Android 10以上就很简单,直接使用MediaStore抓到图片路径,然後送给图片剪裁就好 i...
-NIST 通用风险模型 (NIST SP 800-30 R1) NIST 通用风险模型描述了威胁...