【Swift】クロージャについて
目次
Crosure(クロージャ)とはなにか
- 変数をスコープ内に閉じ込めるためのデータ構造
- 高階関数を定義することで、利用者が挙動をカスタマイズできる(データの処理部分を外に委託できる)
- 例 : map関数、sort関数
- C#ではDelegateがクロージャに当たる
- 関数オブジェクトとして扱える
クロージャの基本的な記述方法
基本的な形は以下のように記述になります。
1 |
|
クロージャは、関数オブジェクト
として扱えるのが特徴です。
オブジェクトとして扱えるので、以下のように、変数への代入
や関数の引数にする
などの使い方ができるわけです。
変数への代入
1 |
|
使用方法は、通常の関数と同じように使用できますが、関数では必要な引数名
の指定が必要ありません。
1 |
|
関数の引数として使用する
宣言方法
1 |
|
使用方法
直接記述
1
2
3send(data:String, handler: { (responseMessage) in {
print(message)
})メソッドを渡す
1
2
3
4
5func printMessage(responseMessage:String)->Void{
print(responseMessage)
}
send(data:"{title:テストデータ}", handler:responseMessage)
トレイリングクロージャ
関数の引数のクロージャを記述するときに、クロージャが最後の引数になっていれば以下のように省略して記述することができます。
1 |
|
参考
【Swift】クロージャについて