閉包
百度解釋:
閉包就是能夠讀取其他函數內部變量的函數。例如在javascript中,只有函數內部的子函數才能讀取局部變量,所以閉包可以理解成“定義在一個函數內部的函數“。在本質上,閉包是將函數內部和函數外部連接起來的橋樑。
實例
實現類 類的繼承 方法的重寫
-- 閉包方式實現類
function People(name)
local self = {}
local function init() -- 構造方法
self.name = name
end
self.SayHi = function ()
print("Hello "..self.name)
end
init()
return self
end
-- 閉包實現類的繼承
function Man(name)
local self = People(name)
local function init()
end
self.SayHello = function()
print("Hello man "..self.name)
end
init()
return self
end
local m = Man("chasinghope")
m:SayHello() -- 調用自己的方法
m:SayHi() -- 調用繼承People的方法
-- 閉包實現類的重寫
function Woman(name)
local self = People(name)
local function init()
end
self.SayHi = function ()
print("I am Woman. I will rewrite People. "..self.name)
end
init()
return self
end
local n = Woman("chasinghopetwo")
n:SayHi() -- 重寫SayHi方法測試
代碼塊有點醜,因爲markdown沒lua
吐槽一下,哈哈
個人總結
一句話總結Lua:萬物皆是表!