美文网首页Swift小课
100 Days of Swift - 04 Day: Swif

100 Days of Swift - 04 Day: Swif

作者: NieFeng1024 | 来源:发表于2022-12-09 09:50 被阅读0次

100 Days of Swift - 04 Day: loops, loops, and more loops

4.1 For loops(For 循环)

  • Swift loops 有很多种方式,内在机制是一样的,重复执行代码直到一个条件为false。
  • 最常见的循环就是For 循环,For循环为有限循环, 遍历Array/Range,每次循环时都会拉出一个元素并分配给一个常量。
  • 当不使用遍历时分配的常量时,建议用下划线替代常量名称,即:告知编译器不需要创建临时常量。

4.1.1 示例

  • 遍历Range
    let count = 1...10
    for number in count {
        print("Number is \(number)")
    }

    for _ in 1...5 {
        print("play")
    }
  • 遍历数组
    let albums = ["Red", "1989", "Reputation"]
    for album in albums {
        print("\(album) is on Apple Music")
    }

4.2 while 循环

  • Swift 循环之while 循环, while 循环为无限循环,使用while关键字,执行循环,当任意条件为false时终止循环
    var number = 1
    while number <= 20 {
        print(number)
        number += 1
    }
    print("Ready or not, here I come!")

4.3 repeat 循环

  • repeat和while 类似,根据条件执行循环体
  • repeat的循环条件在循环体末尾,先执行后判断条件。
    var number = 1
    repeat {
        print(number)
        number += 1
    } while number <= 20
    print("Ready or not, here I come!")
  • repeat 弥补了while 循环的不足,先执行后判断,直到条件终止。
  • 下面的示例先将数组随机洗牌,然后判断洗牌前后是否相等,否则再重新洗牌,直到不相等为止。似乎没有什么问题,只是有一行代码重复,但repeat 更符合语义。更简洁,无重复代码。
  • while 洗牌
let numbers = [1, 2, 3, 4, 5]
var random = numbers.shuffled()

while random == numbers {
    random = numbers.shuffled()
}
  • repeat 洗牌
let numbers = [1, 2, 3, 4, 5]
var random: [Int]

repeat {
    random = numbers.shuffled()
} while random == numbers

4.4 退出循环

  • break 关键字为退出循环标识,不再执行循环体
var countDown = 10
while countDown >= 0 {
    print(countDown)

    if countDown == 4 {
        print("I'm bored. Let's go now!")
        break
    }

    countDown -= 1
}

let scores = [1, 8, 4, 3, 0, 5, 2]
var count = 0

for score in scores {
    if score == 0 {
        break
    }

    count += 1
}

4.5 退出多层循环

  • 退出多层循环的意义在于优化性能
  • Step 1 给外层循环加标签
  • Step 2 在内层循环 需要退出的位置执行 break + 外层循环标签
outerLoop: for i in 1...10 {
    for j in 1...10 {
        let product = i * j
        print ("\(i) * \(j) is \(product)")

        if product == 50 {
            print("It's a bullseye!")
            break outerLoop
        }
    }
}

4.6 跳过循环

  • continue 关键字跳过当前行,不跳出循环体,继续执行下一次循环
for i in 1...10 {
    if i % 2 == 1 {
        continue
    }

    print(i)
}

4.7 小结

  • 循环允许执行重复代码直到条件终止
  • 最常见的循环是for 循环,将循环中的每个数据项分配给一个临时常量
  • 如果for循环体不需要临时常量则用下划线替代常量名,优化性能
  • while 循环和 for 循环类似,先判断条件,后执行循环体,条件终止则循环终止
  • repeat while 循环先执行后判断条件,始终会执行一次,比while 循环更强大
  • break 退出单循环,不再执行循环体
  • break + 外层循环标签 可退出 多次循环,优化性能
  • continue 跳过当前循环,继续执行下一次循环

声明:本文创作来自hackingwithswift

相关文章

网友评论

    本文标题:100 Days of Swift - 04 Day: Swif

    本文链接:https://www.haomeiwen.com/subject/wwonfdtx.html