前の例での 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.