如果需要快速枚举一个集合的元素,尽管C语言可以用for (i = 0; i < len; ++i)枚举不同元素,现代编程语言提供了更优雅的做法。
- ObjC 2.0提供了快速枚举
for (NSString *str in arr) - C++11引入了基于范围的for循环遍历数组或者容器
for (int i : arr) - C#
foreach (int i in arr) - Java
for (int i : arr) - Swift提供for快速遍历,可追加where字句限制循环条件
for i in 1...5 where i % 2 == 0 - Kotlin 提供形如 for (i in 1..5) 或 for (i in 1.rangeTo(5)) 简洁的遍历写法。
- 不包含5的遍历:for (i in 1 until 5)
- 也提供 形如逆向遍历: for (i in 5 downTo 1)
- 也可调整step: for (i in 1 until 5 step 2) 遍历1 3
- 仓颉 提供类似Kotlin简洁且可控循环开始结束和步长的for循环。
- 从1到9:for (i in 1..10)
- 从1到10:for (i in 1..=10)
- 从1到10,步长2:for (i in 1..=10 : 2)
- 遍历4, 8:for (i in 1..=10 : 2 where i % 4 == 0)
循环过程修改循环变量
- C#
foreach
循环期间是不允许修改循环变量(注意是不能修改用于循环的变量,而非每个对象),以避免循环状态不统一。