*Luaリファレンス 要注意点 ~クロージャ~ [#s3686e51] -クロージャとは~ クロージャを知らない人にとってクロージャは理解しずらいものである。 しかし、実は、クラスの類似品と考えてよい。~ ~ 例えば、 #sh(csharp){{ class Counter { int iCurCnt; Counter(int iDefaultCnt) { iCurCunt = iDefaultCnt; } IncCounter(int iIncValue = 1) { iCurCnt += iIncValue; } } }} 「ネストされた関数」を、「スコープ外から参照するいずこかに存在する変数のライフサイクル」が生存する限りにおいては、 「該当のネストされた関数が参照するローカル変数」もまた、「元来のスコープを超えて生存する」、そのような機構、と考えておけば破綻しない。) **関数の定義は2種類 [#mb15204a] -functionを前に置く書き方(シンタックスシュガー) #sh(lua){{ function foo (x) return 2*x end }} -無名関数を変数に代入する書き方 #sh(lua){{ foo = function (x) return 2*x end }} と、ほぼ同じ意味。~