如何在 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 屬性
您可以根據您的需求和用例選擇任何方法。因為每種方法都可用於不同的情況。