Swift2 : クロージャの省略形について
クロージャの省略形
次のようなクロージャを例に見比べてみましょう。
var myFunc : (i:Int, j:Int) -> Int
1.0. 省略なし
まずは省略しない記述。
myFunc = { (i:Int, j:Int) -> Int in return i + j }
1.1. 型の省略が可能なパターン
型が推論できるため省略できる。
myFunc = { (i, j) in return i + j }
1.2. return文の省略が可能なパターン
処理内容がreturn文の一行のみであるため省略する。
myFunc = { (i, j) in i + j }
引数としてのクロージャ
2.1. クロージャ1個のみを引数とする場合の( )が省略可能
let x:Int = 100, y:Int = 200 let hoge = { (f:((Int, Int) -> Int)) -> Int in return f(x, y) } let ans = hoge {$0 + $1}
2.2. 最後の引数がクロージャの場合は引数の外に出せる
こちらは省略形ではありませんが覚えておいて損はないでしょう。
let calc = { (i:Int, j:Int, f:((Int, Int) -> Int)) -> Int in return f(i, j) } let ans = calc(1, 5) {$0 + $1}