美文网首页
Swift之for-in循环

Swift之for-in循环

作者: loongod | 来源:发表于2022-06-10 18:00 被阅读0次

    Swift中没有了for-of循环,大部分遍历内容都落在了for-in的身上。

    一、基本用法

    遍历数组内容

            let array = [1, 2, 3, 4, 5]
            for item in array {
                print(item)
            }
    

    遍历字符串内容下标

            for (n, c) in "Swift".enumerated() {
                print("\(n): '\(c)'")
            }
    ---console
    // Prints "0: 'S'"
    // Prints "1: 'w'"
    // Prints "2: 'i'"
    // Prints "3: 'f'"
    // Prints "4: 't'"
    

    遍历数组内容下标

            let array = [1, 2, 3, 4, 5]
            for (i, v) in array.enumerated() {
                print("i: \(i); v: \(v)")
            }
    ---console
    i: 0; v: 1
    i: 1; v: 2
    i: 2; v: 3
    i: 3; v: 4
    i: 4; v: 5
    

    遍历字典keyvalue

            let dic = ["k1": "v1", "k2": "v2", "k3": "v3", "k4": "v4"]
            for (k, v) in dic {
                print("k: \(k); v: \(v)")
            }
    ---console
    k: k1; v: v1
    k: k4; v: v4
    k: k2; v: v2
    k: k3; v: v3
    

    二、循环限制

    2.1 区间限制

    • ...表示闭区间,如:0...10,表示010,并且包含10
    • ..<表示开区间,如:0..<10,表示09,不包含10
    for i in 0..<10 {
        print(i)
    }
    // 0 1 2 3 4 5 6 7 8 9
    
    for i in 0...10 {
        print(i)
    }
    // 0 1 2 3 4 5 6 7 8 9 10
    

    2.2 stride限制

    stride语法提供了更大的灵活性,满足不同的递增条件以和开闭区间的结合。

    • func stride<T>(from start: T, to end: T, by stride: T.Stride)
      返回从起始值到结束值(但不包括结束值)的序列,按指定的步长数量递增。
    • func stride<T>(from start: T, through end: T, by stride: T.Stride)
      返回从起始值到结束值(可能包括结束值)的序列,按指定的步长数量逐步递增。

    【提示】如果需要递减,可以把步长数值设置为负值,但是注意也需要把结束值设置的比起始值小,要不然将没有结果。

            for item in stride(from: 0, to: 10, by: 2) {
                print(item, terminator: " ")
            }
    ---console
    // 0 2 4 6 8
    
            for item in stride(from: 0, through: 10, by: 2) {
                print(item, terminator: " ")
            }
    ---console
    // 0 2 4 6 8 10
    
            for countdown in stride(from: 3, through: 1, by: -1) {
                print("\(countdown)...")
            }
    // 3...
    // 2...
    // 1...
    

    2.3 where限制

    where语句就是添加限制条件使用的,for-in中当然也可以使用。

            let arrayOne = [1, 2, 3, 4, 5]
            let dictionary = [1: "v1", 2: "v2"]
            for i in arrayOne where dictionary[i] != nil {
                print("i: \(i)")
            }
    ---console
    i: 1
    i: 2
    

    相关文章

      网友评论

          本文标题:Swift之for-in循环

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