iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 9
0
Software Development

Swift 菜鳥的30天系列 第 9

Day-09 Swift 語法(5) - 被控制的Control flow—轉換控制流

Control Transfer Statements

轉移控制語句,簡單來說他就是在程式執行的過程改變程式的執行順序,或是跳制另一段程式碼執行。(對,就是讓原本更複雜的,看起來更複雜。)

Continue

continue 就是告訴循環停止目前的執行程序,並且再次從頭開始執行循環。

https://ithelp.ithome.com.tw/upload/images/20180717/20107701MtUAXqTQm1.png

在這個範例中,我們 for 迴圈到 textInput 遇到小寫的 a , p , l ,e 就停止目前循環,並從新開始循環,因此剩下不會經過 case 的大寫的 A , P ,L ,E 會經由 default 內的 append 新增到 textOutput 的字串中。

Break

break 會立刻結束整個 control flow ,當你想要提前結束 switch 或者循環語句的時候可以使用它。

在循環中使用 break 時,break會立即結束循環的執行,並轉移控制到循環結束後的第一行上,當前循環中的其他程式碼都不會進行;在 switch 中使用 break 時,也會立刻結束他的執行,並直接將控制轉移到 switch 結束的第一行程式碼上。

  • For in 的 break 範例,我們將在 i 大於 6 時,break 並印出結果。
    https://ithelp.ithome.com.tw/upload/images/20171227/201077019tKaeEsgmi.png

  • Switch 的 break 範例,我們在 default 不需執行任何動作,所以我們給他一個 break,讓他在匹配到 default 結果時,就直接轉移到 if let 語句執行。
    https://ithelp.ithome.com.tw/upload/images/20171228/20107701Q4SPNc8WQL.png


Fallthrough

假如我們使用 break 是讓程式碼結束執行轉移到下一段程式碼上,則 fallthrough 則是請程式碼繼續貫穿執行下一個情況或 case 的內容,以下我們會舉出一個使用fallthrough的例子。

  • fallthrough 前
    https://ithelp.ithome.com.tw/upload/images/20171228/201077010wswRTPCk8.png
    這是我們還沒使用 fallthough 前的樣子,如果我們想讓他也顯示 default 中 "(food)也是飲料" 的程式碼,我們就在 case 後方寫下 fallthough ,讓他執行 case 匹配成功後的下一段程式碼。

  • fallthrough 後
    https://ithelp.ithome.com.tw/upload/images/20171228/20107701i2AHFKzr5B.png

特別強調 fallthrough 關鍵字只是使代碼執行直接移動到下一個情況,並不是貫穿整段程式碼。

https://ithelp.ithome.com.tw/upload/images/20171228/20107701rOCEhAsoIl.png
當你匹配條件不符合時,fallthrough也不會執行也不會跳至 default。

https://ithelp.ithome.com.tw/upload/images/20171228/20107701Qqb97FVf3r.png

你也可以在全部的 case 後加上 fallthrough 貫穿整段程式碼。
https://ithelp.ithome.com.tw/upload/images/20171228/20107701GCY2ls7F7i.png

假如你設的值是變數,他也會在進行每段程式的運算並計算他的值。
https://ithelp.ithome.com.tw/upload/images/20171228/20107701nIM2u3xQaj.png


給語句上標籤 (Labeled Statements)

給程式碼貼上標籤除了方便查找及了解外,你也可以透過上述介紹的功能加上標籤,讓功能作用在所標記該段的程式碼上,語句裡寫標籤也會讓邏輯更加清晰跟了解。下列舉一個加上標籤的範例:

如果我們單純只在 switch 中 break,只是 break 我們當下這個 switch 而已,而不是整個語句,所以外面的 while 循環會繼續執行。
https://ithelp.ithome.com.tw/upload/images/20171228/20107701yfVNbLT6tn.png

如果我們希望他在當 integer 在 6...10 區間 break 的時候,外面的 while 循環也跟著停止執行,我們可以為這個 while 循環給上一個叫做 countLoop 的標籤,並且在 break 後面加上該標籤指定 break 它。

https://ithelp.ithome.com.tw/upload/images/20171228/20107701IjOxRA1SAy.png


上一篇
Day-08 Swift 語法(4) - 到底要跑去哪的 Control Flow
下一篇
Day-10 Swift 語法(6) - 動手做 Functions
系列文
Swift 菜鳥的30天30

尚未有邦友留言

立即登入留言