Swift中的repeating关键字是什么?

时间:2018-12-08 12:50:04

标签: swift func

我正在阅读官方的《 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"]

那么代码中的“重复”有什么用?

1 个答案:

答案 0 :(得分:1)

这不是关键字,它是一个可选的函数参数标签,可以与函数/方法中使用的本地参数名称不同。

阅读The Swift Programming Language中的Function Argument Labels and Parameter Names部分:

  

每个函数参数都具有参数标签和参数名称。参数标签在调用函数时使用;每个参数都写在函数调用中,并带有其参数标签。参数名称在功能的实现中使用。默认情况下,参数使用其参数名称作为其参数标签。 …

     

您在参数名称之前写了一个参数标签,并用空格隔开...

     

如果您不希望为参数添加参数标签,请为该参数写下划线(_)而不是显式参数标签。