- プロジェクトマネージャ(大阪)
- Webエンジニア(大阪PHP)
- ★東京・大阪/CS/MG
- 他64件の職種
-
開発
- Webエンジニア(大阪PHP)
- エンジニアリングマネージャ
- ブリッジSE/オフショア開発
- PM(楽楽シリーズ)
- テックリード(大阪/PHP)
- フロントエンドエンジニア
- ブリッジSE(大阪)
- エンジニアオープンポジション
- Javaエンジニア(楽楽明細)
- Webエンジニア
- Webエンジニア
- フロントエンド(リーダー)
- モバイルエンジニア
- Android/iOSアプリ
- 社内SE(大阪/セキュリティ)
- 社内SE(大阪/インフラ)
- 社内SE(大阪/クラウド)
- インフラエンジニア
- 品質管理/技術支援チーム
- QAリーダー/マネージャー
- 戦略企画・データマネジメント
- システム企画
- AI/機械学習エンジニア
- データマネジメント・戦略企画
- 社内SE(データエンジニア)
- UIデザイナー(リーダー)
- UI/UXマネージャー
- UIデザイナー
-
ビジネス
- プロジェクトマネージャ(大阪)
- 導入支援/導入コンサルタント
- PdM(楽楽シリーズ)
- 開発マネージャー
- プロダクトセキュリティ
- PMMプロダクトマーケティング
- アシスタントマネージャー
- 経営企画
- データマネジメント・マーケ戦略
- 法務
- 経営企画/事業分析
- 内部監査(業務監査)
- 法人営業
- ITセールス
- 営業企画オープンポジション
- ITセールス(福岡)
- ITセールス(名古屋)
- ITセールス(大阪)
- 法人営業/カスタマーサクセス
- フィールドセールス
- セールスマネージャー
- ビジネスオープン
- ITセールス経験者
- 製品企画/法要件(楽楽明細)
- オンラインマーケティング
- 営業推進リーダー(楽楽精算)
- ブランド企画・ブランディング
- ブランド企画
- マーケティングリーダー
- マーケティング担当
- オフラインマーケティング
- 製品企画/プロダクトマーケ
- CSマーケティング
- 企画マーケティング
- その他
Swiftのクロージャについて
はじめに
こんにちは。ラクスエンジニアのstrongWhite
です。
今回はSwiftにおけるクロージャ
の書き方をまとめようと思います。
クロージャはJavaScriptなどを勉強した方は馴染みがあるかもしれませんが、初めての方は慣れるまで時間がかかるかもしれません。
なお、今回はSwift自体の説明を省きます。過去の記事でSwiftについて触れているので、気になる方はそちらをご参照ください。
クロージャとは
まずは前置きから。そもそもクロージャとは?ですが、簡単に言うと名前のない関数
です。
文章にすると余計に混乱されるかもしれませんが、あえてまとめるなら以下のような感じでしょうか。
自身が定義されたスコープ内で解決する関数
実行結果を次の処理で続けて使用する関数を作成したい場合に使用
これを読んでも意味不明だと思いますので、後ほどサンプルコードを書いてみます。
コールバックとは
クロージャとは直接関係ありませんが、この後のサンプルコードにコールバック関数
が出てくるので、コールバックとは?という方のためにあらかじめ解説しておきます。
コールバックとはあとで呼ぶ
という意味で、呼び出し先の関数の中で実行されるようにあらかじめ指定しておく関数をコールバック関数
と言います。関数の中で別の関数を呼ぶイメージです。
実例(通常の書き方)
それではサンプルコードを見ていきましょう。まずは通常の書き方から。単純な文字列を出力するプログラムです。
実例(クロージャの書き方)
続いてクロージャを使ったサンプルコードです。処理内容は通常の書き方と変わっていません。
ややこしそうですが簡単に処理の流れを解説すると、関数A
の実引数title
の値がcallbackの引数になる=blogName
の引数になります。
そしてRAKUS Developers Blog
にを読んで
が足された文字列がreturnされ、関数A
の処理でさらにラクスを知ろう
が足され、最終的な文字列が出力されることになります。
高度な書き方に見えますが、Swiftをやっているとよく出てくる書き方なので覚えておいて損はないです。
このとき、関数A
のcallbackが前述したコールバック関数
です。関数A
で呼び出されて初めて処理が行われます。
クロージャにすると何がよいのか?
最初に書いたように実行結果を次の処理で続けて使用する関数を作成したい
場合に有効です。
例えば、ダウンロードしたCSVファイルを返す関数downLoadCsv
があるとします。サンプルコードでいうとdownLoadCsv
は関数A
相当になります。
downLoadCsv
から返されたCSVファイルをもとに後続の処理を行いたい(例. CSVファイルをパースする)場合、クロージャでdownLoadCsv
の返り値を記述してあげれば実行結果を引き継げます。
慣れるととても使いやすく、記述もシンプルになるので、クロージャの書き方をぜひマスターしてみてください。