我正在阅读官方的《 Swift编程语言(Swift 4.2)》一书,在Swift Tour / Generics部分中,我遇到了以下代码
func makeArray1<Item>(repeating item: Item, numberOfTimes: Int) -> [Item] {
var result = [Item]()
for _ in 0..<numberOfTimes {
result.append(item)
}
return result
}
let arr1 = makeArray1(repeating: "knock", numberOfTimes: 4)
print(arr1)
打印出来
["knock", "knock", "knock", "knock"]
我对函数makeArray1的定义中“重复”一词的作用感到困惑。我尝试使用以下代码运行不带单词的代码
func makeArray2<Item>(item: Item, numberOfTimes: Int) -> [Item] {
var result = [Item]()
for _ in 0..<numberOfTimes {
result.append(item)
}
return result
}
let arr2 = makeArray2(item:"knock", numberOfTimes:4)
print (arr2)
并且代码给出了与以前相同的结果。
["knock", "knock", "knock", "knock"]
那么代码中的“重复”有什么用?
答案 0 :(得分:1)
这不是关键字,它是一个可选的函数参数标签,可以与函数/方法中使用的本地参数名称不同。
阅读The Swift Programming Language中的Function Argument Labels and Parameter Names部分:
每个函数参数都具有参数标签和参数名称。参数标签在调用函数时使用;每个参数都写在函数调用中,并带有其参数标签。参数名称在功能的实现中使用。默认情况下,参数使用其参数名称作为其参数标签。 …
您在参数名称之前写了一个参数标签,并用空格隔开...
如果您不希望为参数添加参数标签,请为该参数写下划线(_)而不是显式参数标签。