我有点困惑的答案,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。