lua语言 简单类测试
注意:定义函数和调用函数时都需要使用冒号,使用冒号了的函数会自动拥有self属性,才能实现类,否则使用的是共同的table属性,无法实现每个实例都拥有自己的变量。
注意:不要通过对new函数传参来初始化类的成员变量,建议额外添加函数进行类成员的初始化!
Class = {
member_var1 = 0,
}
function Class:member_func1(arg1)
print(self.member_var1)
self.member_var1 = arg1
print(self.member_var1)
end
-- 注意:不要通过对new函数传参来初始化类的成员变量,建议额外添加函数进行类成员的初始化
function Class:new(obj)
obj = obj or {}
setmetatable(obj, self) --设置obj的metatable为self(即class类),这样可以拥有class类的成员函数与成员变量,但却不与其它实例共享。
self.__index = self --如在obj上查找不到的域,则会在其__index上继续查找,从而实现类的继承
return obj
end
--初始化函数
function on_init()
print "on_init"
local obj1 = Class:new()
obj1:member_func1(1)
local obj2 = Class:new()
obj2:member_func1(2)
end
on_init()
output:
on_init
0
1
0
2

浙公网安备 33010602011771号