平々凡々エンジニア

平凡で難しい悩みを解決

自分はあまり使わないけど... defer

defer とは

スコープを抜け出すときに実行するもの

func deferTest() {

    let arrayData = ["red", "blue", "yellow", "pink"]

    for data in arrayData {
        defer {
            print("defer文実行")
        }

        if data == "blue" {
            print("スコープを抜けます")
            break
        }

        print(data)
    }
}
deferTest()

// 【結果】
// red
// defer文実行
// スコープを抜けます
// defer文実行

注意

defer前にreturnやbreakしてしまうと実行されない

func deferTest(param: String) {

    if param == "blue" {
        print("スコープを抜けます")
        return
    }
    // このdeferは実行されない
    defer {
        print("defer文実行")
    }
}
deferTest(param: "blue")

// 【結果】
// スコープを抜けます

社内でよく使う人がいたので必然的に覚えました。 しかし可読性には問題なくてもコード読んでる最中に忘れてしまうことがあったのであまり好きにはなれませんでした。