奇思妙想 · 2024年 5月 5日 0

简洁的for循环

31 次浏览

如果需要快速枚举一个集合的元素,尽管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循环期间是不允许修改循环变量(注意是不能修改用于循环的变量,而非每个对象),以避免循环状态不统一。