平々凡々エンジニア

平凡で難しい悩みを解決

swiftのクロージャ

クロージャとは

自分を囲むスコープにある変数を参照する関数 Swiftは第一級関数をもつ。関数そのものを型に指定できたり、関数をインスタンス化します。 関数に名前がない無名関数としても定義することも可能です。

使い方

//雛形
{(引数名1: 型, 引数名2:...) -> 戻り値の型 in
  クロージャの実行時に実行される文
 必要に応じてreturn文で戻り値を返却する
}

//サンプルコード1(処理内容1文)
let double = { (x: Int) -> Int in
  x * 2
}
double(2)

//実行結果
4

//サンプルコード2(処理内容2文以上)
var plus = { (x: Int) -> Int in
    var y = 0
    y += x
    return x + y
}
plus(3)

//実行結果
6
3

使い所としては変数や引数に関数の中身を直接代入できるので、グローバル変数の削減やや関数の実行結果を次の処理で続けて使用する関数を作成したい場合に使用できます。名前が不要であったり、型推論してくれるので関数定義よりも軽く定義できます。