Swiftにおける**クロージャ(Closure)**とは、名前のない関数のようなもので、一連の処理を変数や定数として扱うことができる機能です。クロージャは、他の関数に引数として渡したり、戻り値として返したり、変数に代入して後で実行することができます。
1. クロージャの基本構文
例:
2. 関数との違い
| 関数 | クロージャ |
|---|---|
funcキーワードで定義 |
{ }ブロックで定義 |
| 名前を持つ | 通常は無名(匿名) |
| 再利用しやすい | 一時的な処理に向いている |
3. クロージャの省略記法(クロージャ式の簡略化)
Swiftでは、型推論や引数名の省略により、クロージャをより簡潔に記述できます。
通常の形:
省略形:
-
$0,$1は、順に引数を表します。 -
明示的な
returnも省略できます。
4. クロージャの使用例
配列のmap関数で使用:
map関数で使用:
ソート時のクロージャ:
5. クロージャのキャプチャ
クロージャは、**外部の変数や定数をキャプチャ(捕捉)**することができます。つまり、クロージャの外で定義された値を内部で保持し、使用できます。
例:
このように、countは関数の外ではアクセスできませんが、クロージャ内に保持され、状態を維持します。
まとめ
-
クロージャは、無名関数のようなもの。
-
関数と同様に引数・戻り値を持つことができる。
-
簡潔な書き方が可能(省略記法)。
-
変数のキャプチャにより、状態を保持できる。
-
高階関数(map, filter, sortなど)と一緒に使われることが多い。
生成日:2025/05/04