• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua中强大的元方法__index详解

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

今天要来介绍比较好玩的内容:__index元方法

我是备胎,记得回头看看

咳咳,相信每一位女生都拥有或者不知不觉中拥有了一些备胎,啊!当然,又或许是成为过别人的备胎。

没有备胎的人,就不是完整的人生。(扯远了。。。)

我们来想象一下,如果对一个table进行取值操作,但是table根本就没有这个值呢?

比如:

    local t = {
        name = "hehe",
    }

    local mt = {
        __index = function(table, key)
            print("虽然你调用了我不存在的字段,不过没关系,我能探测出来:" .. key);
        end
    }

    setmetatable(t,mt);  --或者这样写t = setmetatable({name = "hehe"}, mt)

    print(t.money);

如果这里的t没有元表,那么这里打印的结果就是:nil,因为t里面确实没有“money”这个key,自然也就没有对应的值。

但是如果给t设置了元表,那么情况就变了。

Lua查找一个表的元素时的规则如下:

1、在表中查找,如果找到,返回该元素,找不到,转到步骤2

2、判断该表是否有元表,如果没有,返回nil,如果有,转到3

3、判断元表有没有__index元方法,如果__index元方法为nil,则返回nul;如果__index方法是一个表,则重复1,2,3;如果__index方法是一个函数,则调用之。

所以说,__index元方法是不是有点备胎的意思呢,只有表里找不到的时候,才会想到元表中的__index元方法。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua第三方插件列表发布时间:2022-07-22
下一篇:
Lua学习笔记(一):搭建开发环境发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap