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

我正在通过一个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”中的“for”。 我明白为什么它在那里,但是句法上是什么样的元素呢? 是否for seguesegue命名的参数?

它仅仅是装饰 – 一个毫无意义的元素,而是帮助开发者理解上下文吗? 它做了什么吗? 这个概念有一个名字吗? 我可以用我自己的方法吗?

我看到与“在”和“在”相同的情况。

该语法允许您为参数标注两次 – 一次用于函数( 参数名称 )中,一次用于调用( 参数标签 )。 默认情况下,这两个参数是一样的(就像你的例子中的sender一样),但是当它们使得一个函数在调用站点更易读时,它们会有所不同:

 prepare(for: aSegue, sender: something) 

比以下更具可读性:

 prepare(segue: aSegue, sender: something) 

这听起来像你准备继续,没有准备继续。

for在函数内部使用引用segue是一个可怕的名字,所以如果你需要,你可以使用一个不同的名字。

这个想法是为了满足呼叫站点可读性的有时相互冲突的目标以及实现中的明智的命名。

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

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

在调用函数时只有相关性。 name在函数内部使用。