Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func unreachableDefer() {
- print(#function + " start")
- if true { return }
- // It will not execute because unreachable
- defer { print("defer-1") }
- print(#function + " end")
- }
- unreachableDefer()
- /*
- unreachableDefer() start
- */
- func deferTwice() {
- print(#function + " start")
- var i = 0
- // Defer does not capture variable when this line reached
- // The value of runtime will be used
- defer { print("defer-1 i=\(i)") }
- defer { print("defer-2 i=\(i)") }
- i = 1
- print(#function + " end")
- }
- deferTwice()
- /*
- deferTwice() start
- deferTwice() end
- defer-2 i=1
- defer-1 i=1
- */
- func deferIf() {
- print(#function + " start")
- do {
- print("do block start")
- if true {
- // It will execute immediately if 'if-block' ended
- defer { print("defer-if") }
- } else {
- defer { print("defer-else)") }
- }
- print("do block end")
- }
- print(#function + " end")
- }
- deferIf()
- /*
- deferIf() start
- do block start
- defer-if
- do block end
- deferIf() end
- */
- func deferInForloop() {
- print(#function + " start")
- for i in 1...5 {
- defer { print("defer-\(i)") }
- }
- print(#function + " end")
- }
- deferInForloop()
- /*
- deferInForloop() start
- defer-1
- defer-2
- defer-3
- defer-4
- defer-5
- deferInForloop() end
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement