问:这个操作是做什么的?
下面一行是[String : Int]类型的字典
let namesAndScores = ["Anna": 2, "Brian": 2, "Craig": 8, "Donna": 6]
接下来,请注意循环中的以下行:
namesAndScores.keys
这个.keys 属性为我们提供了一个新的数组,它由只是您的字典中的键组成。例如:
let keys = ["Anna", "Brian", "Craig", "Donna"]
接下来,您只是在上面描述的数组中循环:
for key in namesAndScores.keys {
print("\(key), ", terminator: "")
}
问:为什么“终结者:”没有出现在结果中?
Terminator 只是一个让您设置打印行终止符的参数。换句话说,它允许您选择在每行之后打印的内容。默认情况下,它的"\n" 为我们提供了一个新行。
在您的示例中,您有:print("\(key), ", terminator: "")。将打印语句的 终止符 设置为 ""。你只是告诉你的print() 函数打印没有一个尾随换行符。像这样打印您的值:
布赖恩、安娜、克雷格、唐娜,
但是,您可以将任何字符串传递给终止符参数,例如:
print("\(key), ", terminator: " -hi- ")
这会给你这个:
布莱恩,-hi- 安娜,-hi- 克雷格,-hi- 唐娜,-hi-
因此,当您只使用常见的print("\(key), ") 而不设置终止符时,您的 terminator 参数将获得一个 default 值,该值相当于:
print("\(key), ", terminator: "\n")
这会在新行上打印每个项目,如下所示:
布赖恩,
安娜,
克雷格,
唐娜,
根据评论更新:
问:为什么在结果中 Brian 在 Anna 之前,而 Brian 在之后
安娜在字典里?
字典未排序。因此,.keys 的结果数组将处于不可预测的顺序。幸运的是,您只需在 for 循环中添加 .sort(<) 即可对结果数组进行排序。
for key in namesAndScores.keys.sort(<) {
print("\(key), ", terminator: "")
}
打印:
安娜、布莱恩、克雷格、唐娜,