美文网首页
Swift 关键字 -- defer

Swift 关键字 -- defer

作者: 呵呵_7380 | 来源:发表于2022-05-31 10:52 被阅读0次

    defer

    用于在程序离开当前作用域之前,执行一段代码。

    public func method() -> Void {
        print(1)
        defer {
            print(2)
        }
        print(3)
    }
    

    输出:

    1
    3
    2
    

    上诉在一个作用域内只有存在一个 defer 代码块

    思考:

    相同作用域内存在多个 defer 声明,代码的执行顺序又是如何 ?

    public func method() -> Void {
        print(1)
        defer {
            print(2)
        }
        print(3)
        defer {
            print(4)
        }
        print(5)
    }
    
    输出
    1
    3
    5
    4
    2
    

    与 defer 声明顺序倒序执行

    相同作用域内存在多个 defer 声明且在 defer 中嵌套 defer 是如何执行,代码的执行顺序又是如何 ?

    public func deferMethod() -> Void {
        print(1)
        defer {
            print(2)
        }
        print(3)
        defer {
            print(4)
            defer {
                print(5)
            }
            print(6)
        }
        print(7)
    }
    
    输出
    1
    3
    7
    4
    6
    5
    2
    

    defer 内嵌套 defer 也同上诉作用域结束后执行,作用域对应是 defer 的作用与范围。

    相关文章

      网友评论

          本文标题:Swift 关键字 -- defer

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