这里是一个lua面向对象实现很简单的例子。
Acount = { balance = 0, withdraw = function(self ,v) self.balance = self.balance - v end } function Acount:deposit(v) self.balance = self.balance + v end function Acount:new(o) --让o 不可能为空,是一个表 o = o or {} --这里的self是Acount自身 ,则表o的元表是Acount setmetatable(o ,self) --__index指向Account自身,当new的对象(也就是表)找不到元素时,则会从Account表中找。 self.__index = self return o end a = Acount:new({balance = 0}) b = Acount:new{balance = 55} --这里a调用deposit方法,但是找不到,于是去它的元表里找 --相当于:gemetatable(a).__index.deposit(a ,1000) a:deposit(1000) b:deposit(1000) print(a.balance) print(b.balance)