Swift: guard と defer についての覚書

Swift2 より登場した guarddefer ですが、if 文に慣れすぎてなかなか使おうとせず、覚えられなかったので、勉強を兼ねてメモしておきます。

目次

  • guard
  • defer
  • guard defer サンプル
  • まとめ

guard

条件式が false の場合の処理を記述することができる。if の else 部分のみの構文。

guard 条件 else {
    処理
    return or break or throw
}

defer

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

defer {
    処理
}

guard defer サンプル

ViewController.swift

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        var str: String
        for i in 0...3 {
            guard i <= 1 else {
                // 1以下でない場合(=2,3のとき)に str へ文字が代入される
                str = String(i)
                print("guard: \(str)")
                continue
            }
            defer {
                // str に文字が代入されたとき実行される
                print("defer: \(str)")
            }
            str = String(i)
        }
    }
}

実行結果

defer: 0
defer: 1
guard: 2
guard: 3

まとめ

guard と defer のセットを適切に利用すれば、if 文よりモダンかつスマートに処理が記述できますね。

この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから

Related Contents

Pickup Contents