Lua语言中面向对象的实现

这里是一个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)


你可能感兴趣的:(lua语言,lua,object,面向对象)