Swift中类似C++和ruby中的final机制

Posted 大熊猫侯佩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift中类似C++和ruby中的final机制相关的知识,希望对你有一定的参考价值。

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)


我们知道在C++和ruby语言的错误处理中有一种final机制,发生在无论是否出现错误都会执行的情况.这时适合处理收尾或清理工作.

在Swift中同样存在一个defer语法,后面跟闭包可以完成类似的功能,只不过defer不仅仅可以用在错误处理中,它可以用在任何需要清理的情况:

var isTrue = false
func test(name:String)->Bool{
    isTrue = true
    defer {
        isTrue = false
    }
    print("now isTrue is \(isTrue)")
    return name == "hopy"
}

test("hopy")
print(isTrue)

可以看到在test退出之前isTrue都是true,当函数退出后由于前面的defer语句的作用,isTrue会变为false.

以上是关于Swift中类似C++和ruby中的final机制的主要内容,如果未能解决你的问题,请参考以下文章

final .....finally ...... 和Finalize ......区别

C++ 中是不是有类似于 ruby​​ 的 set_trace_function 的工具?

异常处理机制中的return关键字

为啥 Java 变量不更频繁地声明为“final”?与 swift 中的 let 关键字进行比较 [关闭]

c++与java 的析构函数

c++或者C 语言中有没有类似C#中事件委托的机制