苹果新发布的语言Swift在official documentation上有一个示例。例子是这样的;

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 {
    for number in numbers {
        if number > largest {
            largest = number
        }
    }
}
largest

这很简单,但是作为一项额外的练习,它需要添加另一个变量以返回最大的数字类型(即此处为Square)

但是,我似乎无法弄清楚这里表示的“(种类,数字)”是什么,以及如何使我的for循环遍历所有Dictionary(interestingNumbers)键并找出哪个键具有最大的数字。

谢谢大家的帮助

最佳答案

Swift允许您使用元组语法(key, value)遍历字典。因此,在for循环的每次迭代中,Swift都会将指定的元组变量(在您的情况下为kindnumber)重新分配给实际的字典记录。

要确定示例中哪个键包含的数字最大,可以按如下所示扩展代码:

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
var largestKey = ""
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            largestKey = kind
        }
    }
}
largest     // =25
largestKey  // ="Square"

或者,如果您想练习元组语法,请尝试一下(结果相同):
var largest = 0
var largestKey = ""
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            (largestKey, largest) = (kind, number)
        }
    }
}
largest     // =25
largestKey  // ="Square"

07-24 09:45
查看更多