加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在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函数来获取信息.不过,我再次鼓励您阅读上面提供的链接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读