KATUBLO
2019年05月26日

【swift】クロージャ(closure)とはなにか?初心者が解説した

こんにちは。KATUOです。
今回はswiftにおけるクロージャについて解説してこうと思います。

クロージャとはなにか

簡単にいうならば

 

1.名前のない関数

2.自身が定義されたスコープ内で完結する関数

3.実行結果を次の処理で立て続けて使用する関数

といった感じでしょうか。って自分で書いといてあれですが、意味わかんないっすよねこれ。コードを見ながら理解して行きましょう。

 

presentメソッド

クロージャには直接関係ないですが、以下のメソッドを見てみましょう。

 

 

このメソッドはモーダルビューを表示するコードです。この第3引数はモーダルビューが表示されたあとの処理がかかれます。このメソッドをさらに詳しくみてみましょう。

 

 

 

第3引数はnilを初期値とした関数の型が指定されています。

 

 

?はオプショナル型を表しており、この関数の引数はvoid、戻り値もvoidとなっています。このような関数の引数、戻り値の型の書き方も同時に慣れておきましょう。

 

クロージャを使ったコードで理解する

通常の関数とクロージャを比べる

通常の関数

 

クロージャ

 

このクロージャのコードについて解説すると、このクロージャの型はvoidであり、戻り値もvoidという書き方をしています。ちなみにこの地点で両者は同じ動きをします。

 

 

クロージャ定義後にクロージャを呼び出す

では次は一旦クロージャを定義した後、クロージャを実装、呼び出す処理を見てみよう。

 

 

こちらのクロージャも引数も返り値もstringで指定していますね。ちなみにクロージャの引数はin以降に使用できます。

callback型のクロージャを見てみる

callbackというのは呼び出した先の関数内で実行するようにあらかじめ指定をしておく関数のことをcallback関数と呼びます。

 

 

処理のフローを解説すると、Aを実行した際に、Aの引数で指定したnameがcallback関数の引数として与えられ、in以降で処理をした内容がcallbackの返り値となり、上のような出力結果になります。

 

参考サイト

http://tech-blog.rakus.co.jp/entry/2018/04/20/120628

 

勉強するのに使ってる参考書

最後まで読んで頂き、ありがとうございました。
SNS等でのシェアが頂ければ幸いです!

プロフィール

@KATUO

現在都内私立大学に通う大学4年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習をスタート。この時期からプログラミングにどハマりし、現在までに「AIスタートアップ」「Webマーケティング会社」でエンジニアとしての業務に没頭してきた。

スポンサードリンク

大学生必見就活イベント