我对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, 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
我知道,当字典被遍历时,最大的数字被设置为变量largest
。然而,我搞不懂为什么Xcode说largest
被设置了5次,或者1次,或者3次,这取决于每个测试。
查看代码时,我发现仅在"Prime“中就应该设置6次(2,3,5,7,11,13)。然后,它应该跳过"Fibonacci“中的任何数字,因为这些数字都小于最大值,当前从"Prime”设置为13。然后,它应该设置为16,最后在"Square“中设置为25,总共产生8次。
我是不是漏掉了什么很明显的东西?
发布于 2017-06-22 15:26:55
let dict : [String : Any] = ["FirstName" : "Maninder" , "LastName" : "Singh" , "Address" : "Chandigarh"]
dict.forEach { print($0) }
结果将是
("FirstName","Maninder") ("LastName","Singh") ("Address","Chandigarh")
发布于 2018-10-30 19:55:51
这是一个用户定义的函数,用于遍历字典:
func findDic(dict: [String: String]) {
for (key, value) in dict {
print("\(key) : \(value)")
}
}
findDic(dict: ["Animal": "Lion", "Bird": "Sparrow"])
// prints…
// Animal : Lion
// Bird : Sparrow
发布于 2016-10-13 01:06:13
以下是该实验的替代方案(Swift 3.0)。这会准确地告诉您哪种类型的数字是最大的。
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 whichKind: String? = nil
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
whichKind = kind
largest = number
}
}
}
print(whichKind)
print(largest)
OUTPUT:
Optional("Square")
25
https://stackoverflow.com/questions/24111627
复制相似问题