美文网首页
swift3.0 defer语句记录

swift3.0 defer语句记录

作者: 莫小哈 | 来源:发表于2017-03-08 17:20 被阅读24次

在swift中defer代码块中的代码 时必须执行的代码 不过也是该方法最后执行的语句

func doPrint() {
    print(" 1")
    defer {
        print("执行")
    }
    print("2")
}

执行的结果是

1
2
执行。

可以看到打印出"1"以后并不是直接打印出"执行"而是打印"2"最后打印了"执行"

还有就是当有的方法内 有的代码必须执行 但是在执行改代码的时候又不得不进行错误验证如果有错误就必须返回 这种情况的时候就能用到defer代码块
我没有写这样的方法 在网上找了一个里现在贴出来

func writeSomething() {
    let file = OpenFile()
    let ioStatus = fetchIOStatus()
    guard ioStatus != "error" else {
        return
    }
    file.write()
    closeFile(file)
}

像这种情况下 如果ioStatus检测到错误 就会跳出方法 但是 文件就永远不会上锁
如果把closeFile(file)放到defer代码块中它就会在执行return的时候执行colseFile方法

func writeSomething() {
    let file = OpenFile()
    defer {
        closeFile(file)
    }
    let ioStatus = fetchIOStatus()
    guard ioStatus != "error" else {
        return
    }
    file.write()
}

不过defer代码块必须要放到return之前不然defer代码块也是不会执行的

相关文章

  • swift3.0 defer语句记录

    在swift中defer代码块中的代码 时必须执行的代码 不过也是该方法最后执行的语句 执行的结果是 12执行。...

  • 29. Defer

    29. Defer 什么是 defer? defer 语句的用途是:含有 defer 语句的函数,会在该函数将要返...

  • go语言的defer语句

    go语言defer语句的用法 defer的语法 defer后面必须是函数调用语句,不能是其他语句,否则编译器会出错...

  • golang defer语句简单解析

    defer 下面举例说明了defer语句的作用: 输出结果: 很明显 defer语句的执行顺序是反的。这种语法给我...

  • defer

    defer 后面只能跟函数调用语句 defer 后面的调用语句在函数退出时调用 多个defer调用的时候,调用顺序...

  • go 的 defer 实现原理

    defer 需要注意的2点 defer 函数的参数在defer 语句出现时就已经确定func foo() { ...

  • Golang(十五)defer语句

    defer` 1.1 延迟是什么? 即延迟(defer)语句,延迟语句被用于执行一个函数调用,在这个函数之前,延迟...

  • Swift 中 defer 的介绍与使用场景

    Swift 中 defer 的介绍与使用场景 用defer语句在即将离开当前代码块时执行一系列语句。该语句让你能执...

  • 第15章-defer语句

    defer 1.1 延迟是什么? 即延迟(defer)语句,延迟语句被用于执行一个函数调用,在这个函数之前,延迟语...

  • 11 Go defer语句 && init()函数

    1、defer语句 结果 2、init()函数

网友评论

      本文标题:swift3.0 defer语句记录

      本文链接:https://www.haomeiwen.com/subject/jfabgttx.html