swift func:我无法理解下划线作为可编译的参数名称

时间:2016-04-25 05:30:06

标签: swift func

如何使用下划线参数

func test(currentName name: String, _: Int) {

    print("aa\(name) abc");
    //how to use  _  parameter?
}

test(currentName:"aa", 3)

3 个答案:

答案 0 :(得分:2)

_表示当您调用test函数时,您不必在第二个参数test(currentName:"aa", 3)

之前写入文本

如果你声明你的函数是这样的:

func test(currentName name: String, secondParameter: Int) {    
    print("aa\(name) abc");
    //how to use  _  parameter?
}

然后当你调用test函数时,你必须这样调用:

test(currentName:"aa", secondParameter: 3)

答案 1 :(得分:2)

在Swift中,函数同时具有参数标签和参数名称。这是为了清楚使用这些功能。考虑一下普通的C函数,它被声明为:

string FunctionName(string firstName, string lastName)

查看函数声明,很容易看出每个参数是什么。在这种情况下,firstName和lastName。但是,当在代码中调用它时,它不太明显,特别是如果参数值不是自描述的。例如:

FunctionName("Neil","Armstrong") // Fairly obvious

FunctionName("Bo","Ng") // Not so obvious

在swift中,参数同时包含标签和名称。标签纯粹是为了清晰起见,因此可以更容易地阅读和理解调用该函数的代码,而无需深入了解其定义以完全理解它

let fullName = funcName(firstName: "Bo", lastName: "Ng")

在某些情况下,参数名称完全没必要,例如:

let total = addTwoNumbers(1,2)

因此标签是可选的,用下划线表示

func addTwoNumbers(_ firstVal:Int,_ secondVal:Int)

一般来说,除非你觉得参数是完全自我描述的,否则你应该使用标签来使你写的函数更清晰。

答案 2 :(得分:1)

如果你想使用第二个功能参数,但不想" name"它,你必须将函数的签名更改为func test(currentName name: String, age _: Int),然后将第二个参数称为age

func test(currentName name: String, _ age: Int) {
    print("Name: \(name), age: \(age)")
}

test(name: "Piter", 3)