Swiftのマニュアルをそのまま和訳しても理解できないところがあるので自分なりにリメイクしてみました。
funcを使ってfunctionを宣言することができます。functionはfunction名に続いてアーギュメントリストをカッコで括って呼び出すことができます。
->を使ってパラメーター名とfunctionの返り値の型を分ける事ができます。
デフォルトでは、functionはパラメーター名をパラメーターのアーギュメントラベルとして使用します。
パラメーター名の前にカスタムアーギュメントラベルを書くか、_を書くことでアーギュメントラベルを使用しないこともできます。
tupleを使って混ぜ合わさった値を作ることができます。
例えば、複数の値をfunctionから返してもらいたいときなどに使えます。
tupleの中のエレメントはエレメントの名前でも、番号(左から0,1,2,3…)でも示すことができます。
Functionはネストされることができます。
ネストされたfunctionは外のfunction内で宣言された変数とつながりをもちます。
ネストはファンクションの中で長かったり複雑なコードを構成するのに使えます。
Functionはファーストクラスな型です。
これは、functionが他のfunctionを値として返すことができることを意味します。

functionは他のfunctionを一つのアーギュメントとして取り入れることができます。
Functionはあとから呼び出すことができるコードのかたまりであり、まさに特別なケースにおけるclosureです。
ネストされたfunctionの説明のときにもうすでにひとつの例が出ていますが、closureの中のコードは変数やfunctionのようにclosureが作り出されたscopeで利用できるだけでなく、実行されたときにclosureが違うscopeにあったとしてもつながりをもっています。
コードを{braces}で囲んで書くことで名前なしでclosureを書くことができます。
inを使ってbodyからアーギュメントと返り値の型を分けます。
他にもclosureをもっと簡潔に書く手段があります。
delegateからの返答のようにclosureの型が分かっている場合、パラメーターか、返り値の型もしくはその両方を省くことができます。
一文のclosureは暗黙的に値を返しています。
パラメーターを名前の代わりに番号で示すことができます。
この手段は特にとても短いclosureに有効です。
closureがfunctionへの一つだけのアーギュメントである場合、(parentheses)を完全に省くことができます。








