如何在 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+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告