参照するよう設定しています。参照するよう設定しています。これらのincrementBySevenとincrementByTenに設定されたクロージャは、キャプチャしている変数runningTotalを増加させることができます。これは、関数を含めクロージャが参照型であるためです。関数やクロージャを定数や変数に代入するとき、実際にはクロージャの参照を定数や変数に設定しています。incrementBySevenには、それぞれ別々のクロージャの参照が設定されています。以上のように、クロージャは特に高階関数に対して活用されます。高階関数とは以下のうち少なくとも1つを満たす関数のことです。関数を引数に取る関数を返すさて、ここで、クロージャの効用についてもう少し考えてみましょう。クロージャの特徴は、定義されているコンテキストにある定数や変数をキャプチャすることができるということでした。これは、定義されているコンテキストにある定数や変数をクロージャの中に閉じ込める(閉包する)ということで、これによって、外部から、その値にアクセスできなくなさせるということを意味しています。次のようなクラスを考えて見ましょう。runningTotal}}これを実行して、上のincrementByTenと同じような振る舞いをさせてみましょう。Incrementer(amount:10)print(incrementByTen.increment())//10と出力print(incrementByTen.increment())//20と出力このように、上記incrementByTenと同じ機能を持つインスタンスをつくることができました。ここで、以下の操作をしてみましょう。5そうすると以下のように、それまでと異なる挙動をするようになります。print(incrementByTen.increment())//25と出力print(incrementByTen.increment())//30と出力これは、incrementByTen.amountを外部から編集できることで予期せぬ挙動を招いてしまった結果です。上記クロージャのincrementByTenの場合、定数や変数をクロージャの中に閉包しているので、外部からアクセスできず、予期せぬ挙動を招くことはありません。ある機能がコンピュータの(論理的な)状態を変化させ、それ以降で得られる結果に影響を与えることを「副作用(SideEffects)」といいますが、クロージャの場合、変数や定数をキャプチャ(閉包)することで副作用を防いでいるのです。以上、今回は、Swiftのクロージャについて解説しました。