Swiftでdeferを使う方法 [Swift2.2]

Pocket

こちらもguardと一緒でSwift2.0から使える新しめのもの。

deferはスコープを抜け出す際に、実行される処理を定義できるよ。

Swiftでdeferを使う

こんな感じでtmpにnumの文字列が格納されたあとに、それぞれdeferが動いてprintが動作してるよ。

注意点があって、deferの宣言する位置で処理が異なるので補足するよ。

Swiftでdeferの処理のタイミング

上と見比べたらわかるように、deferを下に移動しただけだよ。

でも上と出力結果が異なってるのがわかると思う。

deferというのはあくまで、処理をスコープが終わるまで待つという処理なので、deferが待ち始める前にbreakやreturnなどでスコープを抜けてしまうと実行されないよ。

(今回はiが2のときにスキップされて、スコープから抜けてるよ)

おまけ: deferを複数定義する

このように複数deferを定義しても問題なく動くよ。

出力結果を見たらわかるように、下に宣言したほうが先に動くよ。

deferguardと組み合わせて、必須条件を満たしていない場合の処理をdeferに記述するといったナウい感じで使えるよ。


おわりに

最近、Q&Aの teratail が割と便利なのでおすすめ。

ボクがリリースしたアプリも役に立ったらDLしてみてね -> iOSアプリ
スポンサーリンク
  • このエントリーをはてなブックマークに追加