Kotlin 的迴圈 (loop) for … in
代表著將 in
關鍵字後的群組拆分成 in
前的個體,再於 { }
中依序訪問,若用在字串上則會拆解為一個一個字元,如下圖的 Line: 4 所示;用在 List
則會巡迴所有成員,在 Line: 11 示範;hashMap
上可拆成 Key
與 Value
兩個變數在迴圈內使用,於 Line: 17 展示。
當然 for 也能用於一般的數值遞增迴圈,起始值與最終值以 ..
連接,可以直接使用整數數字也能代入變數,如下圖左邊的示範。另外,在下圖右邊展示除了直接設定數值之外,也能放入運算元計算,迴圈預設每次增加量是 1 ,這裡可加上 step
關鍵字調整每次迴圈增加量。
上圖中的 ..
在 C#、JS 中表達就是 <=
,Kotlin 有提供 <
的表示方式:until
,如下圖左邊範例。另一種延伸是使用 downTo
關鍵字,由於 step
一定要指定正整數,所以若使用 ..
沒辦法做遞減迴圈 (也許未來 Kotlin 版本會調整,目前這篇文章撰寫時的版本為 1.3),此時就要改用 downTo
,其中 T
一定要大寫,然後再把最大值放在最小值前方,迴圈就會依照 step
數值從最大值開始遞減,簡單來說就是 >=
的概念,如下圖右邊的使用方法。
作者寫到這邊不得不說 Kotlin 在迴圈這部份的設計 until、downTo、step 真的不好用,除了需要多打幾個字,在設計上也不是很方便,導致在寫這篇時一整個呈現驚訝狀態。
接著介紹另外兩種迴圈使用方式,一個是 while
另一個是 do
,使用方式與其他語言相同,相信大家都很熟悉,皆是滿足 ()
括號內的條件時,就會執行迴圈,當設計有瑕疵時就會導致無限迴圈,這點需要特別小心。另外 while
跟 do
的差別就是,do
無論如何都會先執行一次,也就是 Just do it 的概念...。
還有一點,在 while
與 do
迴圈中,因為需要對變數 a
進行計算,所以這邊需要使用 var
宣告。
講到迴圈就得再介紹 break
、continue
、label
三種彈性控制迴圈的方法,控制迴圈時會搭配 if
判斷式進行,當遇到 break
關鍵字時,就會直接中斷並跳離迴圈範圍,繼續之後的程式碼;遇到 continue
時,在這之後的迴圈工作都會略過,直接執行回到迴圈判斷式的地方執行,需注意的地方是使用 continue
時,要注意設計在增量值 (a++)
後方,否則你的迴圈條件不會改變,只會不斷的 continue
陷入無限迴圈之中。
Kotlin 有提供 Label
的功能,能夠幫助您在設計複雜迴圈程式段時,將各層級的迴圈貼上標籤,如此一來在使用 break
或 continue
時,就能直接指定操作對象,能夠更靈活的使用,下圖示意各層級的程式流程,Line: 7~10 在正常設計中並不會接著使用,前方的驚嘆號 IDE 會提示你該段程式碼永遠不會執行到。
今日的課程就學習到這邊,關於程式語言的課程還有三篇,但內容的難度會比之前的要深一點,下一章將介紹 Kotlin 物件導向的概念,我們明天見!
資料參考
Returns and Jumps: break and continue - Kotlin Programming Language
https://kotlinlang.org/docs/reference/returns.html