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

lua – 没有metamethods的元数据的使用是什么?

发布时间:2020-12-14 21:48:16 所属栏目:大数据 来源:网络整理
导读:我开始在Lua学习基于Prototype的编程.我想知道没有metamethods的metatables的用法是什么.在下面的示例中有一行自我.__ index = self当我删除此行时,somevalue在我的新对象中不可见这是正常的,因为我没有使用metamethod __index.那么metatables的用法是什么
我开始在Lua学习基于Prototype的编程.我想知道没有metamethods的metatables的用法是什么.在下面的示例中有一行自我.__ index = self当我删除此行时,somevalue在我的新对象中不可见这是正常的,因为我没有使用metamethod __index.那么metatables的用法是什么 – 仅使用metamethods?对不起琐碎的问题,但这真的很有趣,我知道我可以使用getmetatable来检查某些对象的元表.我需要一个简单的答案:没有metamethods就没有用,或者有(如果是的话那么).

-- Example taken from the official documentation.
Account = { somevalue = 1 }

function Account:new (o)
    o = o or {}   -- create object if user does not provide one
    setmetatable(o,self)
    --self.__index = self
    return o
end

a = Account:new()
print(a.somevalue) -- nil,so I can't use any features of the metatable till I use some metamethod?

解决方法

根据定义,metatables存储metamethods.这并不意味着metatable必须只存储metamethods;几个库将自己用作元数据.

metatable是一个普通的Lua表.当您将setmetatable作为第二个参数调用setmetatable时,它只会成为对象的元表.

(编辑:李大同)

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

    推荐文章
      热点阅读