Swiftの関数はオブジェクトとして使える
JS使いならふつーの話だけど。こういうコードを見るとObjective-Cとは全く別やなぁ・・・
//Intを引数にしてIntを返す関数を返す func makeIncremeter()->(Int->Int) { func plus(number:Int) -> Int { return number + 1 } return plus } var increment = makeIncremeter() increment(111) //intの配列と、intを引数にBoolを返す関数を引数に、Boolを返す func hasAnyMatches(list : [Int], condition: Int ->Bool) -> Bool { for item in list { if(condition(item)) { return true } } return false } func lessThanTen(number: Int) -> Bool { return number < 10 } var int_arr = [23,2,33,42,1] hasAnyMatches(int_arr, lessThanTen) //クロージャはこう //{(引数) -> 戻り値の型 in 処理}という書式 //外からソート条件与えたり集計条件を与えたりするのに便利よね。 var closure_sort = sorted(names,{(s1:String,s2:String) -> Bool in return s1 > s2 })