我有点困惑的答案,Xcode是给我这个实验在Swift编程语言指南:
// Use a for-in to iterate through a dictionary (experiment) let interestingNumbers = [ "Prime": [2,3,5,7,11,13],"Fibonacci": [1,1,2,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
我理解,当字典正在被转移,最大的数字被设置为变量,最大。但是,我很困惑为什么Xcode说最大的是设置5次,或1次,或3次,取决于每个测试。
当看看代码,我看到它应该在“Prime”单独设置6次(2,3,5,7,11,13)。然后它应该跳过“斐波纳契”中的任何数字,因为这些都小于最大,目前设置为13从“Prime”。然后,它应该设置为16,最后25在“方”,总共产生8次。
我缺少一些完全明显的东西吗?
Swift中的字典(和其他语言)没有排序。当你遍历字典时,没有可见的顺序将匹配初始化顺序。在这个例子中,Swift在其他方法之前处理“Square”键。你可以通过在循环中添加一个print语句来看到这一点。 25是正方形的第五个元素,所以最大的将被设置5次在广场的5个元素,然后将保持在25。
let interestingNumbers = [ "Prime": [2,numbers) in interestingNumbers { println("kind: \(kind)") for number in numbers { if number > largest { largest = number } } } largest
打印:
06001