Swift 3的第一个参数名称

Cos*_*ows 18 swift swift3

在Swift 2中,似乎在调用函数时并不总是需要第一个参数名称.现在在Swift 3中,调用函数时需要第一个参数名称.例如:

func frobnicate(runcible: String) { 
    print("Frobnicate: \(runcible)") 
}
Run Code Online (Sandbox Code Playgroud)

Swift 2.2允许通过简单输入来调用函数:

Frobnicate("Station")
Run Code Online (Sandbox Code Playgroud)

Swift 3似乎要求我们使用方法的第一个参数名称,例如:

Frobnicate(runcible:"Station")
Run Code Online (Sandbox Code Playgroud)

Swift 3适用于所有功能和方法,还是仅适用于某些情况?

Sul*_*han 33

是的,这是对的.Swift正在以这种方式解决语言不一致问题(初始化程序始终需要这样做).

如果您不想使用外部参数名称,只需显式删除它:

func frobnicate(_ runcible: String) { 
    print("Frobnicate: \(runcible)") 
}
Run Code Online (Sandbox Code Playgroud)

您可以阅读Swift Evolution 0046中的完整原理


Wil*_*jay 16

您可以在i-Book中阅读Swift编程语言(Swift 3).您也可以在WWDC 2016中查看:Swift的新功能

在Swift 3中,默认情况下,函数使用其参数名作为其参数的标签.在参数名称前写入自定义参数标签,或写入_以不使用参数标签.

fun greet(_ person: String, on day: String) -> String {
    return "Hello \(person), today is \(day)."
}
greet("John", on: "Wednesday")
Run Code Online (Sandbox Code Playgroud)

要么

// This also works with Swift 2
fun addThreeNumber(_ first: Int, _ second: Int, _ third: Int) {
    print(first+second+third)
}
addThreeNumber(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)


Ras*_*ick 9

究竟.在Swift 3.0中,必须为所有参数(包括第一个参数)编写参数名称.参数名称是在函数实现主体内部使用的名称.

func frobnicate(runcible: String) { 
    print("Frobnicate: \(runcible)") 
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,如果未明确指定任何参数标签,则外部参数标签与参数名称相同.参数标签是用于在调用函数时传递参数的标签.如果需要,为了更清晰的目的,您还可以明确指定外部参数标签.以下示例 -

func frobnicate(runcibleExternalLabel runcible: String) { 
    print("Frobnicate: \(runcible)") 
}
Run Code Online (Sandbox Code Playgroud)

如果要在调用函数时跳过外部参数标签,只需在参数名称前添加"_".

func frobnicate(_ runcible: String) { 
    print("Frobnicate: \(runcible)") 
}
Run Code Online (Sandbox Code Playgroud)