美文网首页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