#・クロージャ(無名関数)とは
Swift実践入門(p.136)によれば、クロージャとは、再利用可能なひとまとまりの処理を指す。また、関数はクロージャの一種であるため、共通の仕様が数多くある。しかし、クロージャにはクロージャ式という定義方法によって名前が不要であったり、型推論によって型の記述が省略可能であったりと関数よりも手軽に定義することができる。
#・主な使用用途
主な使用用途としては、非同期通信がある。APIにリクエストを飛ばし、帰ってきたレスポンスを処理する際に利用することが多い。
#・定義方法
{ (引数名1: 型, 引数名: 型...) -> 戻り値の型 in
クロージャの実行時に実行される文
必要に応じてreturn文で戻り値を返却する
}
#・実行方法
let some = { (num : Int) -> Int in
return num * 10
}
some(10) // 100
#・引数の型としてのクロージャ
クロージャ:名前のない関数を変数や定数に代入する。
関数:変数や定数をパラメータとして受け取れる。
ゆえに、関数は、名前のない関数をパラメータとして受け取ることができる。
let someValue : (Int) -> Int
func someFunction (x: (Int) -> Int) {}
#・クロージャのOptional
クロージャ変数にnilが代入されていれば何もしない
var someClosure : ((Int,String) -> Void)? = nil
someClosure?(100,"yen") //nil
クロージャ変数に値(クロージャ)が代入されている場合には実行する
var someClosure : ((Int,String) -> Void)? = { (value1: Int, value2: String) in
print("\(value1)" + "\(value2)")
}
someClosure?(100,"yen") //100yen