Swiftでdefer文を使う
Swift2.0から追加されたdefer文。スコープを抜ける際に処理をするものですが、Swift3.0で試してみました。
func myFunc(){ defer { print("defer") } print("hoge") } myFunc()
実行結果は以下のようになります。
hoge defer
関数以外のスコープで使ってみる
func myFunc2(){ for i in 0..<3 { defer { print("defer \(i)") } print("fuga \(i)") } } myFunc2()
実行結果
fuga 0 defer 0 fuga 1 defer 1 fuga 2 defer 2
defer文を複数書いてみる
func myFunc3(){ defer { print("hogera") } defer { print("piyo") } defer { print("fuga") } print("hoge") } myFunc3()
実行結果
hoge fuga piyo hogera
使い所
自分の場合は、Swift Perfect のサンプルを触っている時にdefer文を目にしたのですが、そこでは、DBに接続し目的の処理を行った後、defer文内にDBとの接続を切る処理を書く。というように使われていました。
他にも、guard文での必要条件にあっていない場合にdefer文の処理を実行させる。といったような使い方ができるのではないでしょうか。