for

常见通过索引遍历的,都是针对有序的,数组和字符串

概览:

1、没有单独for

2、for..in

2、for...each

1、没有单独的for遍历

Q:为什么没有像C 语言那样的for的索引方式遍历呢?

A: 因为在for...in 里面有更加简单的方式使用索引和对应的值了,所以这个单独的方式没有必要了。

2、for..in 遍历

2.1 遍历有序集合

1)直接遍历值

let array = ["苹果", "香蕉", "橘子"]
for fruit in array {
    print(fruit)
}

2)通过索引遍历值

3)同时获取索引和元素 ,使用 enumerated()

4)范围遍历(Range)

使用 for-in 结合范围操作符来遍历数值区间。

5)步长遍历索引 stride(from:to:by:)

按一定步长遍历索引,从而访问特定索引位置的元素。

2.2便利无序集合

1) 遍历字典(无序集合)

3、forEach方法

数组、字典等集合类型还支持 forEach 方法,允许你通过闭包遍历集合的每个元素。


Q: 有了for.in 为什么还需要forEach?

A: forEach 语法更加简洁,尤其在简单的遍历操作中十分常用。

Q: 如果这样,那么单独的for也不应该去掉?

A:

1、for和for..in 是包含关系,并且for..in比for更加简洁, for..in 可以索引遍历,可以索引+值遍历。

2、for..in和forEach没有包含关系,for..in替代我们传统的for遍历,而forEach是更加适应了函数式链式编程,更加简洁的高阶函数。

for..in 和forEach在语法、用法 各有不同:

1. 简洁性和函数式编程风格

forEach 是 Swift 中函数式编程的一部分。

它使用闭包来处理集合中的每个元素,代码更简洁并且符合函数式编程的风格。

相比于 for-inforEach 可以在一行代码中完成遍历,尤其适合简单的操作。

在某些场景下更符合现代编程的简洁需求,特别是在处理链式操作时。

2. 无返回值和不可提前退出

forEach 不允许 breakcontinue,即你无法在中途停止循环。

for..in 适合中间有判断退出停止循环

forEach 不需要跳出的场景

3. 更适合链式调用

forEach 常用于与其他函数式方法(如 mapfilter)结合使用,使代码看起来更加流畅和易读。

4. 代码风格选择

选择 for-inforEach 很大程度上取决于个人偏好和代码风格。对于一些开发者来说,for-in 更加直观和可读,尤其是在处理复杂逻辑时。而 forEach 更适合需要简洁代码的场景。

总结:

  • for-in:适合需要控制流(如 breakcontinue)的场景,更传统,灵活性高。

  • forEach:适合简洁的遍历操作,尤其是函数式编程风格和链式调用,不允许中途退出循环。

Last updated