如何在 Swift 中反向迭代 for 迴圈?


在 Swift 中,有不同的方法可以反向迭代 for 迴圈。在本文中,您將看到一些方法,如 reversed、ranges、stride(from:to:by:)、forEach() 等。每種方法都可以在不同的用例中使用。此外,您應該知道每種方法都有其自身的效能。

使用 reversed() 方法

此方法透過反轉陣列的元素來返回一個新陣列。它不會更改輸入陣列的順序。

步驟 1 - 建立要迭代的輸入陣列

步驟 2 - 使用 reversed() 函式執行 for 迴圈

步驟 3 - 在 for 迴圈體中對陣列的每個元素執行操作

示例

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for number in numbers.reversed() {
   print("Number is \(number)")
}

輸出

Number is 10
Number is 9
Number is 8
Number is 7
Number is 6
Number is 5
Number is 4
Number is 3
Number is 2
Number is 1

使用 reverse() 方法

此方法反轉輸入陣列的元素。為了使陣列可反轉,您必須使用 var 關鍵字使其可變。

步驟 1 - 建立一個可變的輸入陣列以進行迭代

步驟 2 - 呼叫 reverse() 函式以反轉陣列元素

步驟 3 - 在 for 迴圈體中對陣列的每個元素執行操作

示例

var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers.reverse()
for number in numbers {
   print("Number is \(number)")
}

輸出

Number is 10
Number is 9
Number is 8
Number is 7
Number is 6
Number is 5
Number is 4
Number is 3
Number is 2
Number is 1

使用 Stride(from:to:by:) 函式

如果要反向迭代某個範圍,可以使用 stride(from:to:by:) 方法並使用負步長。在這種方法中,您不需要在輸入陣列上呼叫任何反轉方法。

步驟 1 - 使用預定義範圍呼叫 stride() 函式

步驟 2 - 在 for 迴圈體中對陣列的每個元素執行操作

示例

for number in stride(from: 10, to: 0, by: -2) {
   print("Number is \(number)")
}

輸出

Number is 10
Number is 8
Number is 6
Number is 4
Number is 2

使用 forEach() 函式

您可以使用 forEach 函式反向迭代陣列。forEach 是 Swift 語言中的一個高階函式。

步驟 1 - 建立要迭代的輸入陣列

步驟 2 - 結合使用 reversed() 和 forEach 函式迭代輸入陣列的元素

步驟 3 - 在 for 迴圈體中對陣列的每個元素執行操作

示例

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers.reversed().forEach { number in
   print("Number is \(number)")
}

輸出

Number is 10
Number is 9
Number is 8
Number is 7
Number is 6
Number is 5
Number is 4
Number is 3
Number is 2
Number is 1

使用陣列的 Indices 屬性進行 for 迴圈

您可以反轉陣列元素的索引,而不是嘗試直接反轉它們。此屬性提供了一種靈活的方法來反向迭代陣列。

步驟 1 - 建立一個可變的輸入陣列以進行迭代

步驟 2 - 對陣列元素的 indices 屬性呼叫 reverse() 函式

步驟 3 - 在 for 迴圈體中對陣列的每個元素執行操作

示例

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for index in numbers.indices.reversed() {
    print("Number is \(numbers[index])")
}

輸出

Number is 10
Number is 9
Number is 8
Number is 7
Number is 6
Number is 5
Number is 4
Number is 3
Number is 2
Number is 1

使用帶有範圍的 reversed() 方法

您可以定義一個範圍在迴圈中迭代。使用 reversed() 函式,您可以反向迭代該範圍。

步驟 1 - 建立一個具有起始值和結束值的範圍

步驟 2 - 呼叫 reverse() 函式以反轉範圍值

步驟 3 - 在 for 迴圈體中對陣列的每個元素執行操作

示例

for number in (1...10).reversed() {
   print("Number is \(number)")
}

輸出

Number is 10
Number is 9
Number is 8
Number is 7
Number is 6
Number is 5
Number is 4
Number is 3
Number is 2
Number is 1

使用 enumerated() 方法和 reversed() 方法

您可以執行 enumerated() 方法以從陣列中訪問索引和元素對,以及 reversed() 函式。

步驟 1 - 建立一個可變的輸入陣列以進行迭代

步驟 2 - 對列舉值呼叫 reverse() 函式以反轉陣列元素

步驟 3 - 在 for 迴圈體中對陣列的每個元素和索引執行操作

示例

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for (index, number) in numbers.enumerated().reversed() {
   print("Index: \(index) and number: \(number)")
}

輸出

Index: 9 and number: 10
Index: 8 and number: 9
Index: 7 and number: 8
Index: 6 and number: 7
Index: 5 and number: 6
Index: 4 and number: 5
Index: 3 and number: 4
Index: 2 and number: 3
Index: 1 and number: 2
Index: 0 and number: 1

結論

在 Swift 中,您可以使用不同的方法反向迭代 for 迴圈。每種方法都可以在不同的條件下根據您的需求使用。您可以使用不同的方法來迭代 for 迴圈 -

  • 使用 reversed() 方法

  • 使用 reverse() 方法

  • 透過將 enumerated() 方法與 reversed() 方法結合使用

  • 使用 indices 屬性

您可以根據您的需求和用例選擇任何方法。因為每種方法都可用於不同的情況。

更新於: 2023年4月4日

5K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告