闭包
百度解释:
闭包就是能够读取其他函数内部变量的函数。例如在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:万物皆是表!