在lua中编程,对象
发布时间:2020-12-15 00:16:26 所属栏目:大数据 来源:网络整理
导读:示例代码: function Account:new (o) o = o or {} -- create object if user does not provide one setmetatable(o,self) self.__index = self return oend 取自: http://www.lua.org/pil/16.1.html 目的是什么: self.__index = self 线?为什么每次创建
示例代码:
function Account:new (o) o = o or {} -- create object if user does not provide one setmetatable(o,self) self.__index = self return o end 取自: http://www.lua.org/pil/16.1.html 目的是什么: self.__index = self 线?为什么每次创建对象时都会执行它? 解决方法
正如其他人所说,self(Account表)用作分配给使用new创建的对象的元表.当在’o’中找不到字段时,稍微简化(在提供的链接上提供更多信息),它会转到’帐户’表,因为o的metatable表示转到帐户(这是__index所做的).
但是,每次创建对象时都不需要执行它.你可以很容易地把它粘在某个地方: Account.__index = Account 它也会起作用. 更长的故事是,如果对象o具有metatable,并且metatable具有__index字段集,则o上的失败字段查找将使用__index来查找字段(__ index可以是表或函数).如果o已设置字段,则不要转到其metatable的__index函数来获取信息.不过,我再次鼓励您阅读上面提供的链接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |