当前位置: 首页 > 面试题库 >

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

高化
2023-03-14
问题内容

我正在通过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”也发生了同样的情况。


问题答案:

该语法允许您两次标记参数-一次在函数中使用( 参数名称 ),一次在调用时使用( 参数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在函数内部使用。



 类似资料:
  • for-in语句用于迭代一组值。 for-in语句通常以下列方式使用。 for(variable in range) { statement #1 statement #2 … } 下图显示了此循环的图解说明。 以下是for-in声明的示例 - class Example { static void main(String[] args) { in

  • 本文向大家介绍C# 委托声明的关键字是__?相关面试题,主要包含被问及C# 委托声明的关键字是__?时的应答技巧和注意事项,需要的朋友参考一下 答:delegate.  

  • 问题内容: 您使用关键字还是引发一些验证运行时异常?它给您带来什么好处,或者为什么您认为不值得使用呢? 问题答案: 如果条件为假,则声明将抛出运行时错误(AssertionError)。断言为您提供了一种简化的方式来记录,检查和强制执行代码的正确性标准。好处是用于定义和操纵这些正确性条件的语言级挂钩。如果您希望启用或禁用它们(存在一些关于是否是个好主意的争论),则可以从JVM命令行中启用。下面的一

  • 这对我来说毫无意义,因为异步已经存在。 我最初的计划是这样的: 因为所有测试都不是异步的,但这会产生相同的错误: 移除 并将tokio宏用作tokio::ex。Tokio::try_join!解决了眼前的问题,尽管知道为什么会发生这种情况会很好。

  • C++中的面向对象的变成都是围绕类,继承和虚函数进行的。其中最基础的一部分就是,派生类中的虚函数会覆盖掉基类中对应的虚函数。但是令人心痛的意识到虚函数重载是如此容易搞错。这部分的语言特性甚至看上去是按照墨菲准则设计的,它不需要被遵从,但是要被膜拜。 因为覆盖“overriding”听上去像重载“overloading”,但是它们完全没有关系,我们要有一个清晰地认识,虚函数(覆盖的函数)可以通过基类

  • 我不明白发生了什么事。我严格遵循所有的微软文档,事实上甚至不使用任何我自己的脚本/代码。首先,我按照他们的文档创建Python函数。成功了。https://docs.microsoft.com/en-us/azure/azure-functions/create-first-function-cli-python?tabs=azure-cli、cmd、browser使用命令行工具将Azure功能连