lua的閉包
阿新 • • 發佈:2017-06-11
foo 程序結構 第一個 定義 結構 print -- 變量 匿名
什麽是閉包呢?
其實我也不知道什麽是閉包,更不知道為什麽第一個給這種程序結構起了一個“閉包”的名字是基於什麽。。。就像遞歸一樣。。。感覺逼格好高(懵逼。。流鼻涕)
好了,不管這麽多,只要知道下面這種程序結構就叫閉包
function foo()
local i = 0
function foo2()
i = i + 1
return i
end
return foo2
end
這個函數裏面定義了一個局部變量,然後定義一個嵌套函數修改這個局部變量,返回這個變量,最後把嵌套函數返回出去
結果就是,只要有變量引用了返回出來的嵌套函數,那麽裏面定義的局部變量不會消失,挺神奇的
c = foo()
print(c())
print(c())
輸出
1
2
還可以這麽寫
function foo()
local i = 0
return function() i = i + 1 return i end --匿名的
end
c = foo()
print(c())
print(c())
定義一個函數,一個嵌套函數,在嵌套函數裏面更改父函數變量的值,返回變量。返回嵌套函數。
c = foo()那麽,c就是那個返回的函數,再調用c(),返回運算後的變量
lua的閉包