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

lua __index __newindex upvalue 示例

发布时间:2020-12-14 22:22:19 所属栏目:大数据 来源:网络整理
导读:项目中有个公会对象,数据大部分存在data中,之前都是 u.data.point这样访问,太麻烦了。 于是通过设置__index 使之可以直接访问属性,u.point。 但是还是不能直接改属性,u.point = 4,所以再设置了__newindex。 ? 在设置了setmetatable之后,不能直接给u添

项目中有个公会对象,数据大部分存在data中,之前都是 u.data.point这样访问,太麻烦了。

于是通过设置__index 使之可以直接访问属性,u.point。

但是还是不能直接改属性,u.point = 4,所以再设置了__newindex。

?

在设置了setmetatable之后,不能直接给u添加新属性,因为设置了__newindex,新的属性将直接加到u.data中的。

?

?

?

?

通过修改__index和__newindex会获得不同的结果。

?

1.正确结果

3??? 103??? 3??? 3
4??? 103??? 4??? 4
4??? 103??? 103??? 103
4??? 104??? 104??? 104

?

2.错误的__newindex

3??? 103??? 3??? 3
4??? 103??? 4??? 4
4??? 103??? 103??? 103
104??? 103??? 103??? 103

3.错误的__index

3??? 103??? 3??? 3
4??? 103??? 4??? 4
4??? 103??? 4??? 103
4??? 104??? 4??? 104

?

?

?

这里影响程序的不同结果是upvalue导致的。

由于一般程序中有可能动态改data。所以建议用function设置__index和__newindex,尤其注意各个不同函数中self指向的是什么对象。

(编辑:李大同)

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

    推荐文章
      热点阅读