我正在学习用 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”。我明白为什么它在那里,但它在语法上是什么元素?参数名称是 for
、for segue
还是 segue
?
它仅仅是装饰 - 一个没有任何意义但可以帮助开发人员理解上下文的元素吗?它还有其他作用吗?这个概念有名字吗?我可以在我自己的方法中使用它吗?
我看到“in”和“at”也发生了同样的情况。
最佳答案
语法允许您标记参数两次 - 一次在函数内使用(参数名称),一次在调用时使用(参数标签)。默认情况下,这两个将是相同的(就像您示例中的 sender
一样),但是当它使函数在调用站点更具可读性时它们会有所不同:
prepare(for: aSegue, sender: something)
作为句子的可读性高于:
prepare(segue: aSegue, sender: something)
这听起来像是您正在准备转场,而不是为 转场做准备。
for
在函数内部使用来引用 segue 是一个可怕的名称,因此如果需要,您可以使用不同的名称。
这个想法是为了满足调用站点的可读性和实现中的合理命名有时相互冲突的目标。
定义函数时,如果要使用单独的参数标签和参数名称,请首先指定参数标签,然后再指定参数名称:
func sayHello(to name: String) {
print("Hello " + name)
}
sayHello(to: "Pekka")
to
仅在调用函数时具有相关性。 name
在函数内部使用。
关于swift - Swift3 函数声明中新的 "for"、 "at"、 "in"关键字是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38786181/