前の例での incrementBySeven と incrementByTen は定数ですが、これらの定数が参照するクロージャは、キャプチャしている変数 runningTotal を増加させることができます。これは、関数とクロージャが参照型であるためです。

関数やクロージャを定数や変数に代入するとき、実際には関数やクロージャの参照を定数や変数に設定しています。前の例では、定数 incrementByTen はクロージャの参照で、クロージャ自身の内容ではありません。

つまり、2 つの異なる定数または変数にクロージャを代入した場合、それらの定数または変数の双方が同じクロージャを参照することになります。

let alsoIncrementByTen = incrementByTen
alsoIncrementByTen()
// 値 50 を返す

Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.