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

プログラミング

クロージャとはなにか

簡単にいうならば

 

1.名前のない関数

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

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

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

 

presentメソッド

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

 

 

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

 

 

 

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

 

 

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

 

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

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

通常の関数

 

クロージャ

 

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

 

 

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

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

 

 

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

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

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

 

 

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

 

参考サイト

Swiftのクロージャについて - RAKUS Developers Blog | ラクス エンジニアブログ
はじめに こんにちは。ラクスエンジニアのstrongWhiteです。 今回はSwiftにおけるクロージャの書き方をまとめようと思います。 クロージャはJavaScriptなどを勉強した方は馴染みがあるかもしれませんが、初めての方は慣れるまで時間がかかるかもしれません。 なお、今回はSwift自体の説明を省きます。過去の...

 

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

タイトルとURLをコピーしました