【Swift入門】クロージャの基本形から省略まで書き方まとめ

2021年1月14日

クロージャとは簡単に説明すると、簡略化した名前のない関数のことです。

一度しか使わないなど、わざわざ関数を定義するまでもない場合に使ったりします。

クロージャは初見だと複雑でわかりにくい文法だと思います。

段階を踏んで少しずつ理解していきましょう。

クロージャの基本

クロージャは色々と記述を省略できますが、基本形は

{ (引数: 引数の型) -> 戻り値の型 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

を消して、

波かっこの中身は処理だけにすることができます。

この場合、改行を無くして一行で記述するとスッキリして良いでしょう。

この状態で実行できるのか試してみましょう。

実行ボタンを押してください。

すると、問題なく実行することができますね。