【Swift入門】クロージャの基本形から省略まで書き方まとめ
クロージャとは簡単に説明すると、簡略化した名前のない関数のことです。
一度しか使わないなど、わざわざ関数を定義するまでもない場合に使ったりします。
クロージャは初見だと複雑でわかりにくい文法だと思います。
段階を踏んで少しずつ理解していきましょう。
この記事の目次
クロージャの基本
クロージャは色々と記述を省略できますが、基本形は
{ (引数: 引数の型) -> 戻り値の型 in 戻り値 } |
と記述します。
実際に使ってみましょう。
新しく空のPlaygroundを作ってください。
今回は引数に入れた文字列に挨拶をするクロージャを作って、定数に格納してみましょう。
let Hello = { (name: String) -> String in return “こんにちは、\(name)さん” } |
と記述します。
コードの説明をしておきましょう。
大まかな記述としては『Hello』という定数を作って、
その定数にクロージャを格納するといった記述です。
クロージャを詳しくみてみると、nameというString型の引数を作って
その引数を用いた文字列型の戻り値を返します。
戻り値の型は『->』の右側で指定しています。
クロージャを実行してみましょう。
クロージャを実行するには
クロージャが格納された定数(引数) |
と記述します。
今回の場合は
Hello(“もぎ”) |
と記述します。
今回は戻り値をコンソールに出力したいので、printの引数にクロージャが格納された定数を指定しましょう。
print(Hello(“もぎ”)) |
と記述しましょう。
この状態で実行するとコンソールに『こんにちは、もぎさん』と出力されるはずです。
実行ボタンを押してみましょう。
すると予想通りコンソールには『こんにちは、もぎさん』と出力されましたね。
引数を省略したクロージャ
次に引数を省略したクロージャを作っていきましょう。
先ほど書いた記述をコピペして、
コメントアウトしましょう。
コメントアウトのやり方は、コメントアウトしたい箇所を選択して、
『commandキー』を押した状態で『/』を押すだけです。
コメントアウトするとこのような見た目になります。
それでは引数を省略していきましょう。
引数を省略するには引数の中身を消せば良いだけです。
今回の場合だと
name: String |
を消すだけですね。
実際に消してみましょう。
すると、引数の部分は『()』だけが残ります。
引数が使われていた部分はエラーが出ているので、修正していきます。
戻り値の\(name)を
適当な名前に変えておきましょう。
実行には引数が必要ないので、ここの部分を
消しておきましょう。
引数を消すと実行部分はこのような表示になります。
この状態でうまく実行できるか確認してみましょう。
実行ボタンを押してください。
すると、問題なく文字列がコンソールに表示されますね。
このようにクロージャは引数を省略することができます。
戻り値を省略したクロージャ
引数を省略することができたので、次は戻り値を省略していきましょう。
引数を省略したクロージャをコピペして、
コピーした方をコメントアウトしておきましょう。
それでは戻り値を省略していきます。
まず、処理がなく、戻り値を返すだけの場合『return』を省略することができます。
『return』を
消しておきましょう。
『return』を消すとこのような記述になります。
次に戻り値も省略してみましょう。
戻り値の型である『String』を
『()』に書き換えます。
すると、戻り値が必要なくなるので『Print』で囲いましょう。
クロージャの実行をするとコンソールに出力されるので、実行するときは『Print』で囲う必要がありません。
実行の方の『Print』は
消しておきましょう。
引数と戻り値がない場合は、さらに省略ができます。
() -> () in |
を消して、
波かっこの中身は処理だけにすることができます。
この場合、改行を無くして一行で記述するとスッキリして良いでしょう。
この状態で実行できるのか試してみましょう。
実行ボタンを押してください。
すると、問題なく実行することができますね。