swift - Swift3 函数声明中新的 "for"、 "at"、 "in"关键字是什么?

标签 swift xcode swift3

我正在学习用 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 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/

相关文章:

ios - 自动尺寸不起作用

ios - GameplayKit 寻路使用什么算法?

ios - 在 NSDictionary 中存储 C float 组

swift3 - 带有圆形进度轨道边缘的 UIProgressView - Swift 3

swift - 在 Swift 中转换为不同的 C 结构不安全指针

ios - 从 GameOverScene 返回后我的游戏崩溃了

ios - 用于 Tinder 风格滑动屏幕的 Swift iOS 动画

iphone - FBFriendPickerViewController崩溃

xcode - 在沙箱处于事件状态的 Mac OS X 中写入文件夹

ios - Ios 应用程序中的 3d Touch 替代方案