関数とクロージャ part2 -Swift編-
さて、昨日投稿した記事の続きを書いていきたいと思います。
昨日投稿した記事は以下です。
関数を引数にする
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)
今日は時間が無くなったのでここまで。(この回、小刻みですみません) 今から飛行機に乗ります。