本文承接上一篇,继续用 Lua 演示如何借助 metatable 的 __index 机制,实现"类"与"对象"的基本模型:通过一个带默认字段的 table 作为类,再用 class:new() 生成继承自该类的对象实例。
示例代码
local class={x=5}
function class:new()--定义创建对象方法
o={}--新建一个table
setmetatable(o,{__index=self})--相当于空继承出一个class的 对象
--【【
等效于
setmetatable(0,self)
self.__index=self--self为调用者
--】】
return o
end
local a=class:new()--new 中 self为class
a.x=6
print(a.x)
print(class.x)