提问人:Pekka 提问时间:8/5/2016 最后编辑:Pekka 更新时间:4/17/2023 访问量:7049
Swift3 函数声明中新增的 “for”、“at”、“in” 关键字是什么?
What are the new "for", "at", "in" keywords in Swift3 function declarations?
问:
我正在学习一个用 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”也会发生同样的情况。
答:
29赞
jrturton
8/5/2016
#1
该语法允许您标记两次参数 - 一次用于函数内(参数名称),一次用于调用时使用(参数标签)。默认情况下,这两个是相同的(就像您的示例中的 with 一样),但是当它使函数在调用站点上更具可读性时,它们会有所不同: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
2赞
letthefireflieslive
4/17/2023
#2
这些不是 swift 参数函数中的保留关键字,它们是您可以自由定义的参数标签,这对函数的用户更有意义for
at
语法
func prepare([ARGUMENT LABEL][PARAMETER NAME]: String) {}
功能定义
func prepare(for segue: UIStoryboardSegue) {
print(segue) //what your function scope knows
// print(for) won't work, it's a label for function usage readability
}
函数调用
prepare(for: mySegue) //with argument label
prepare(segue: mySegue) //without argument label
评论
for segue
segue
segue
for