まずクロージャーの基本の形です。
{ (引数) -> 戻り値の型 in //何らかの処理 }
関数名は書きません。JavaScriptの即時関数みたいだなーと思いました。
いろいろな書き方
関数の引数として使う
即時実行される関数で、関数の引数として使うことも可能です。
例えばこんな感じ
func testFunc(num1: Int, num2: Int, str: String, closure: (_ num1: Int, _ num2: Int) -> Int) { print(str + String(closure(num1, num2))) //計算結果は:300と表示される } testFunc(num1: 100, num2: 200, str: "計算結果は:", closure: { (num1: Int, num2: Int) -> Int in num1 + num2})
処理が単文だとreturn文を省略できる
処理を単文で書く場合はreturnが入りません。
勝手に戻り値を返してくれます。
let closure = { (num1: Int, num2: Int) -> Int in //足算する num1 + num2 } print(closure(100, 200)) //300と表示される
便利だけど、書き方がたくさんあって覚えるのが大変です。