iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
Software Development

成為一名 Kotlin 後端攻城獅系列 第 12

Day 12 Kotlin 控制流程 (2) - 迴圈

  • 分享至 

  • xImage
  •  

進入控制流程 day 2, 昨天講了 if-else, when 用於對單一變數進行後續行為的判斷,今天談談迴圈 (Loop)。對大多數讀者 (工程師?),我們所面對的資料往往都是成千上萬筆,這些資料往往會使用各式資料結構儲存,例如前面幾天提過集合的列表 (List)。對於使用這類資料結構的程式來說,如果我要一筆一筆分開來寫成不同段落,不僅無法面對巨量無盡的資料,更不具有撰寫效率與維護性。

https://ithelp.ithome.com.tw/upload/images/20230927/20119910xYAjYjvtEz.png

迴圈

  • for

    val school = listOf("shark", "salmon", "minnow")
    for (element in school) {
        print(element + " ")
    }
    // shark salmon minnow
    

    這裡 element in school 會讓 element 拿到每一個 school 列表裡面的元素,透過 for 迴圈的段落可以對每個一個 element 做操作。

  • for + index

    for ((index, element) in school.withIndex()) {
        println("Item at $index is $element\n")
    }
    // Item at 0 is shark
    // Item at 1 is salmon
    // Item at 2 is minnow
    

    如果要同時對元素在列表中的位置 (index) 操作,則可以用 .withIndex() 在遍歷整個列表的時候同時回傳當前的位置,這時候回傳的執會變成一個 Pair<idx, element>,我們可以用下面範例方法去最這樣的鍵值對操作。

  • do-while , while

    var bubbles = 0
    while (bubbles < 50) {
        bubbles++
    }
    println("$bubbles bubbles in the water\n")
    
    do {
        bubbles--
    } while (bubbles > 50)
    println("$bubbles bubbles in the water\n")
    

    除了給定的範圍內做迴圈,我們也可以對一個對應條件被滿足情況下做持續迴:do-while , while。但這裡需要注意,因為這類的迴圈並沒有給定一個明確的迴圈範圍 (例如給定一個定長的集合,所以當條件持續被滿足他就會持續迴圈下去,可能會造成程式在沒有外力介入下不會停下。
    至於 之間,前者會在進入迴圈前先完成一次迴圈內容再開始迴圈,這用法單純取決於使用情境,並無優劣之分。

  • repeat(times)

    repeat(2) {
        println("A fish is swimming")
    }
    // A fish is swimming
    // A fish is swimming
    
    

    在 Kotlin 中,repeat(times) 函式可以讓我們指定一段程式碼重複執行指定的次數。在上述範例中,程式碼區塊 println("A fish is swimming") 會被執行兩次,因為我們指定了 repeat(2)


上一篇
Day 11 Kotlin 控制流程 (1)
下一篇
Day 13 Kotlin 函式介紹 (1)
系列文
成為一名 Kotlin 後端攻城獅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言