有两个对象 a 和 b,我们想让 b 作为 a 的 prototype 只需要:
setmetatable(a, {__index = b})
这样,对象 a 调用任何不存在的成员都会到对象 b 中查找。
local Account = {balance=1}
function Account:withdraw(v)
self.balance = self.balance - v
end
function Account:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
测试:
local a=Account:new{}
a:withdraw(2) --输出为-1