swfit中的字典和迭代操作
apply plugin: 'java'
compileJava {
targetCompatibility = '1.7'
}
结果是Brian,Anna,Craig,Donna,
这是什么操作呢?为什么"终结者:"没有出现在结果中?答案 0 :(得分:4)
问:这个操作在做什么?
以下行是[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()
函数在没有尾随换行符的情况下打印。打印您的值如下:
Brian,Anna,Craig,Donna,
但是,您可以将任何字符串传递到终结器参数,例如:
print("\(key), ", terminator: " -hi- ")
哪会给你这个:
Brian,-hi- Anna,-hi- Craig,-hi- Donna,-hi-
因此,当您只使用公共print("\(key), ")
而未设置终结符时,终结符参数会获得默认值,该值等同于:
print("\(key), ", terminator: "\n")
这会打印新行上的每个项目,如下所示:
布赖恩,
安娜,
克雷格,
唐娜,
根据评论更新:
问:为什么Brian在安娜之前的结果是Brian在
之后安娜在字典中?
字典未分类。因此,.keys
生成的数组将处于不可预测的顺序。幸运的是,您只需在for循环中添加.sort(<)
即可对生成的数组进行排序。
for key in namesAndScores.keys.sort(<) {
print("\(key), ", terminator: "")
}
打印:
Anna,Brian,Craig,Donna,