一直不知道lua 的metatable怎么用,偶然练习,发现还可以结合面向对象的概念一起用。分享最基础的代码如下:
-- filename "test.lua"
local t = {}
t.__index = t
function t:new(name, age)
local obj = {
__name = name,
__age = age,
}
self.tab = {name = name, age = age}
return setmetatable(obj, self)
end
function t:set(name, age)
self.__name = name
self.__age = age
end
function t:get(name)
if self.__name == name then
return self.__age
end
end
function t:printf()
print("name: "..self.__name)
print("age: "..self.__age)
end
return t
local object1 = (require "test"):new("Chenk", 23)
local object2 = (require "test"):new("Qinly", 22)
object1:printf() 输出 name: Chenk age: 23
print("-----------------")
object2:printf() <span style="white-space:pre"> </span> 输出 name: Qinly age: 22