今天学习到OO,看到类这章,其实table和C/C++的类比较类似,那好,我们现在来进行设计!
local Object = {}
Object.m_Index = 1;
function Object:Add_(a, b)
self.a = a
self.b = b
return a + b
end
function Object:Minus_(a, b)
self.a = a
self.b = b
return a - b
end
function Object:GetA_Data()
return a
end
function Object:GetB_Data()
return b
end
print(Object:Add_(3, 4)) //调用类的一个方法
print(Object:Minus_(3, 4))
print(Object:GetB_Data())
print(Object:GetB_Data())//输出nil,因为我没有创建自己的对象
好,那我们现在来如何创建一个对象:
local Name = {}
function Name:getName()
return Name.name
end
function Name:setName(n)
Name.name = n
end
function Name:New()
local temp_Name_Object = {}
setmetatable(self, temp_Name_Object)
self.a = 5
self.b = 6
Name.name = "lua"
return self //返回this对象
end
local tObject = Name:New() //得到this 对象
print(tObject:getName())
tObject:setName("study lua")
print(tObject:getName())
注意:
这里有个语法问题,你在定义的对象方法时,如果用冒号,那你在调用的时候最好用冒号,因为我在使用的过程中发现,当使用self的时候,老编译不过,真的非常蛋疼!