Iterating Through a Dictionary in Swift

后端 未结 7 695
醉话见心
醉话见心 2020-11-27 12:12

I am a little confused on the answer that Xcode is giving me to this experiment in the Swift Programming Language Guide:

// Use a for-in to iterate through a         


        
7条回答
  •  攒了一身酷
    2020-11-27 12:26

    Dictionaries in Swift (and other languages) are not ordered. When you iterate through the dictionary, there's no guarentee that the order will match the initialization order. In this example, Swift processes the "Square" key before the others. You can see this by adding a print statement to the loop. 25 is the 5th element of Square so largest would be set 5 times for the 5 elements in Square and then would stay at 25.

    let interestingNumbers = [
        "Prime": [2, 3, 5, 7, 11, 13],
        "Fibonacci": [1, 1, 2, 3, 5, 8],
        "Square": [1, 4, 9, 16, 25]
    ]
    var largest = 0
    for (kind, numbers) in interestingNumbers {
        println("kind: \(kind)")
        for number in numbers {
            if number > largest {
                largest = number
            }
        }
    }
    largest
    

    This prints:

    kind: Square
    kind: Prime
    kind: Fibonacci
    

提交回复
热议问题