加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Swift中的函数中的return语句之后运行代码?

发布时间:2020-12-14 05:38:52 所属栏目:百科 来源:网络整理
导读:请考虑以下代码: func textField(textField: UITextField,shouldChangeCharactersInRange range: NSRange,replacementString string: String) - Bool { let validator:NSPredicate = NSPredicate(format:"SELF MATCHES %@","[A-Za-z0-9- ]+") if(validator.
请考虑以下代码:
func textField(textField: UITextField,shouldChangeCharactersInRange range: NSRange,replacementString string: String) -> Bool {
    let validator:NSPredicate = NSPredicate(format:"SELF MATCHES %@","[A-Za-z0-9- ]+")
    if(validator.evaluateWithObject(string) || string == "" /* i.e. backspace */) {
        self.process(textField)
        return true
    }
    else {
        return false
    }
}

我想在return语句之后实际运行self.process(textField),因为在它之前,textField中的文本还没有实际更改.这让我想知道,为什么我不能只在return语句后执行一些代码?为什么函数总是在return语句发生时停止?

我意识到传统上回归意味着什么,但还有其他选择吗?比如,有没有办法从函数中返回一个值,然后仍然继续?

一方面,这似乎是一个愚蠢的问题,但另一方面,我觉得我不能成为第一个想做这件事的人.如果我可以在运行循环的下一个循环中运行某些东西就足够了,所以也许GCD中有些东西可以帮助我.

从Swift 2.0开始,我们有一个名为“defer”的关键字.一个关键字,允许我们指定一个代码块,我们的函数中的一个段,它将在程序控制转移到作用域之外之前执行.可能是为了清理或其他需求,即使抛出错误也需要执行操作.

延迟块内的代码执行被推迟到执行倒数第二个语句,假设最后一个是return语句的情况.

以下是如何使用它:

func anyFunction(someParameter: Int) -> Int {

    // Some code

    defer {

        // Code to be deferred.

    }

    return someValue

} // anyFunction

延迟块的位置应该放在花括号内的任何位置,并且总是在return语句之前,出于逻辑原因,并且还要避免警告:“返回后的代码将永远不会被执行”.

一些例子:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读