提问者:小点点

Swift 3个第一个参数名称


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

func frobnicate(runcible: String) { 
    print("Frobnicate: \(runcible)") 
}

Swift 2.2允许通过简单地键入以下命令来调用该函数:

Frobnicate("Station")

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

Frobnicate(runcible:"Station")

Swift 3 是所有函数和方法都是如此,还是只是某些情况?


共3个答案

匿名用户

是的,这是正确的。Swift 以这种方式修复了语言不一致的问题(这对于初始值设定项总是必需的)。

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

func frobnicate(_ runcible: String) { 
    print("Frobnicate: \(runcible)") 
}

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

匿名用户

您可以在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")

或者

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

匿名用户

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

func frobnicate(runcible: String) { 
    print("Frobnicate: \(runcible)") 
}

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

func frobnicate(runcibleExternalLabel runcible: String) { 
    print("Frobnicate: \(runcible)") 
}

如果您想在调用函数时跳过外部参数标签,只需在参数名称前加一个“_”即可。

func frobnicate(_ runcible: String) { 
    print("Frobnicate: \(runcible)") 
}