一尘不染

Swift3函数声明中新的“ for”,“ at”,“ in”关键字是什么?

swift

我正在通过Swift 2编写有关Swift的初学者教程。

它包含类似(随机示例)的代码

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {

在Swift 3(我正在使用XCode 8 Beta)中,这已经发生了变化,并且IDE会帮助将其转换为新的(漂亮!)表示法:

override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {

让我感到困惑的是“ for segue:”中的“ for”。我知道为什么它在那里,但是它在语法上是什么样的元素?为参数命名forfor seguesegue

它仅仅是装饰吗?除了帮助开发人员理解上下文之外,没有其他意义的元素吗?它还有其他作用吗?这个概念有名字吗?我可以用自己的方法使用它吗?

我看到“ in”和“ at”也发生了同样的情况。


阅读 633

收藏
2020-07-07

共1个答案

一尘不染

该语法允许您两次标记参数-一次在函数中使用( 参数名称 ),一次在调用时使用( 参数label
)。默认情况下,这两个将是相同的(例如sender您的示例中的),但是在使函数在调用站点上更具可读性时,它们是不同的:

prepare(for: aSegue, sender: something)

句子的可读性比:

prepare(segue: aSegue, sender: something)

这听起来像你准备的SEGUE,不准备 进行 的SEGUE。

for 在函数中内部使用该名称来引用segue时将是一个可怕的名称,因此如果需要,可以使用其他名称。

这样做的目的是为了满足有时相互矛盾的目标,即呼叫站点的可读性和实现中的合理命名。

定义函数时,如果要使用单独的参数标签和参数名称,请首先指定参数标签,然后再指定参数名称:

func sayHello(to name: String) {
    print("Hello " + name)
}

sayHello(to: "Pekka")

to仅在调用函数时才有意义。name在函数内部使用。

2020-07-07