首页 > 其他 > 详细

lua(仿类)

时间:2015-03-10 11:58:33      阅读:326      评论:0      收藏:0      [点我收藏+]
Account = {
  balance = 0
}

function Account:deposit(v)
  self.balance = self.balance + v
end

function Account:new(o)
  o = o or {}
  setmetatable(o, self)--Account表本身作为o的metatable
  self.__index = self--自己作为自己的原型??
  return o
end

a = Account:new{balance = 0}

--调用a的deposit,他会查找a的metametable的_index对应的表
--getmetatable(a).__index(a, 100)
--最终调用的是Account的deposit即Account.deposit(a, 100.00)
a:deposit(100.00)--通过这种方法调用了原始的Account的deposit

--将会继承默认的balance的值
b = Account:new()
print(b.balance)--b.balance等于0,下次访问此值时,不会涉及__index,b已经存在自己的balance域

--通过这种方法可以模拟面向对象,Account是类,而创建出来的b是这个类的对象

 

lua(仿类)

原文:http://www.cnblogs.com/zzyoucan/p/4325384.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!