Advertisement
Guest User

Untitled

a guest
May 5th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. func unreachableDefer() {
  2. print(#function + " start")
  3.  
  4. if true { return }
  5.  
  6. // It will not execute because unreachable
  7. defer { print("defer-1") }
  8. print(#function + " end")
  9. }
  10.  
  11. unreachableDefer()
  12. /*
  13. unreachableDefer() start
  14. */
  15.  
  16. func deferTwice() {
  17. print(#function + " start")
  18. var i = 0
  19.  
  20. // Defer does not capture variable when this line reached
  21. // The value of runtime will be used
  22. defer { print("defer-1 i=\(i)") }
  23. defer { print("defer-2 i=\(i)") }
  24. i = 1
  25. print(#function + " end")
  26. }
  27.  
  28. deferTwice()
  29. /*
  30. deferTwice() start
  31. deferTwice() end
  32. defer-2 i=1
  33. defer-1 i=1
  34. */
  35.  
  36. func deferIf() {
  37. print(#function + " start")
  38. do {
  39. print("do block start")
  40. if true {
  41. // It will execute immediately if 'if-block' ended
  42. defer { print("defer-if") }
  43. } else {
  44. defer { print("defer-else)") }
  45. }
  46. print("do block end")
  47. }
  48. print(#function + " end")
  49. }
  50.  
  51. deferIf()
  52. /*
  53. deferIf() start
  54. do block start
  55. defer-if
  56. do block end
  57. deferIf() end
  58. */
  59.  
  60.  
  61. func deferInForloop() {
  62. print(#function + " start")
  63.  
  64. for i in 1...5 {
  65. defer { print("defer-\(i)") }
  66. }
  67. print(#function + " end")
  68. }
  69. deferInForloop()
  70. /*
  71. deferInForloop() start
  72. defer-1
  73. defer-2
  74. defer-3
  75. defer-4
  76. defer-5
  77. deferInForloop() end
  78. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement