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

swift func: i can't understand underscore as a parameter name that can compile

如何使用下划线参数

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

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

test(currentName:"aa", 3)

_表示调用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)

如果你想使用函数的第二个参数但不想 "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)

在Swift中,函数既有参数标签又有参数名称。这是为了在使用函数时清楚起见。想想一个普通的 C 函数,它是这样声明的:

string FunctionName(string firstName, string 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)

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