Note to Self

忘れないためにoutputします。それでも忘れてしまうけど。

関数とクロージャ part2 -Swift編-

 さて、昨日投稿した記事の続きを書いていきたいと思います。
 昨日投稿した記事は以下です。

aki-kasi.hatenablog.com

関数を引数にする

 Swiftでは、関数を引数にすることが出来ます。「どういうこと?!」と思う方もいらっしゃると思いますので、一先ずサンプルコードを御覧ください。

func nameMatch(list: [String], condition: (String) -> Bool) -> Bool {
    for item in list {
        if condition(item) {
            return true
        }
    }
    
    return false
}

func judgeName(name: String) -> Bool {
    if name == "John" {
        return true
    }
    return false
}

var members = ["Mike", "Eline", "John", "Kenny"]

print(nameMatch(members, condition: judgeName))

 このコードはnameMatchという関数に、membersという人物名の配列とjudgeNameという関数を引数として与えます。
 すると、関数はnameMatch関数内でconditionという関数に置き換えられ、実行されます。各関数の簡単な挙動を説明すると。

  • nameMatch : 引数にnumbers(配列、String型)とjudgeName関数を取る。返り値はBool型(true、false)

  • judgeName : 引数にname(変数、String型)を取る。nameが"John"と一致すればtrue、一致しなければfalseを返す。返り値はBool型(true、false)

 今日は時間が無くなったのでここまで。(この回、小刻みですみません)  今から飛行機に乗ります。