質問: { (parameters) -> return type in statements } ``` (質問2) Playgroundで見ると、キャプチャにあるように(a),(b)は実行結果が違います。 末尾に括弧があるかどうかの違いで、文法的にはどういう差になるのでしょうか? (a)は(b)の()を省略したくらいに思ってます。 よろしくお願いします。 ![Playgroundのキャプチャ](https://i.stack.imgur.com/dXttv.png)
回答: b のほうは末尾の `()` のために定義された関数(クロージャー)を呼び出しています。 結果として定数値 10 が返ってきているのです。 また今は気にしなくても良いかもしれませんが、 どちらも厳密にはクロージャーにはなっていません。 関数を定義、利用しているだけです。 よって回答は以下のとおりです。 > > 下のキャプチャ(a),(b)にある書き方はクロージャーなのでしょうか? > > > どちらも厳密にはクロージャーではありません。a は関数を定義しています。 b は関数を定義した上で即時実行しています。 > > 末尾に括弧があるかどうかの違いで、文法的にはどういう差になるのでしょうか? > > > 括弧があることで、直前の関数が呼び出し、実行されています。 なおキャプチャの例がなぜクロージャーとはいえないのかについては Wikipedia より以下を引用して説明に代えさせていただきます。 > > 引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。 > > >