Mer*_*rtD 11 dictionary for-loop swift
Apple最新发布的语言Swift在官方文档中有一个例子.例子是这样的;
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
Run Code Online (Sandbox Code Playgroud)
这很简单,但作为额外的练习,它需要添加另一个变量以返回最大数字的类型(即Square就是这里的情况)
但是,我似乎无法弄清楚这里的"(种类,数字)"是什么,我应该如何使我的for循环遍历所有Dictionary(interestingNumbers)键并找到哪个键具有最大数字.
谢谢大家的帮助
wot*_*pal 17
Swift允许您使用元组语法 循环字典(key, value).因此,在for循环的每次迭代中,Swift关心将指定的元组变量(kind以及number在您的情况下)重新分配给实际的字典记录.
要确定哪个Key包含示例中的最大数字,您可以按如下方式扩展代码:
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"
Run Code Online (Sandbox Code Playgroud)
或者,如果您想练习元组语法,请尝试(具有相同的结果):
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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13686 次 |
| 最近记录: |