クロージャは、コードで使用するために渡すことができる独立した機能ブロックです。Swift のクロージャは、C や Objective-C のブロックに似ていて、他のプログラミング言語でのラムダに似ています。

クロージャは、定義されているコンテキストから定数や変数の参照をキャプチャして保存します。定数や変数をクローズオーバーしているとも言います。キャプチャのメモリ管理は、Swift が処理してくれます。

NOTE
キャプチャの概念について馴染みがなくても心配はありません。Capturing Values で詳細に説明されています。

Functions で紹介されているグローバル関数やネストされた関数は、クロージャの特殊なケースです。クロージャには形式が 3 つあります。

  • グローバル関数は、名前があり、値をキャプチャしないクロージャです。
  • ネストされた関数は、名前があり、囲っている関数にある値をキャプチャできるクロージャです。
  • クロージャ式は、周りのコンテキストにある値をキャプチャできる、軽量シンタックスで記述された名前が無いクロージャです。

Swift のクロージャ式は、一般的な状況で、簡潔ですっきりとしたシンタックスとなるように最適化された、クリーンでクリアなスタイルです。この最適化は、以下のような内容です。

  • コンテキストからパラメータと戻り値の型を推論
  • 式 が 1 つのクロージャからの暗黙のリターン
  • 簡略引数名
  • 後置クロージャシンタックス

Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.