1 Star 0 Fork 270

Ken / lua-nginx-redis

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
self__index.md 1.00 KB
一键复制 编辑 原始数据 按行查看 历史
Tinywan 提交于 2017-05-23 17:39 . :neckbeard::neckbeard::neckbeard:lua中self.__index = self 详解

lua中self.__index = self是什么意思?

  • 设置原表语法:setmetatable(table,metatable): 对指定table设置元表(metatable)
  • http://www.cnblogs.com/mentalidade/p/6561418.html
  • 当一个表存在元表的时候可能会发生改变。lua当发现一个不存在的key时,如果这个table存在元表,则会尝试在元表中寻找是否有匹配key对应的value
    local a = {}        -- 普通表
    local b = {k = 11}  -- 元表 
    setmetatable(a,b)   -- 把 b 设为 a 的元表
    b.__index = b       --设置元方法
    b.v = 22                 --给b表增加一个属性
    a.aa = 33                --给a表增加一个属性
    print(a.k)               --11,因为a有元表b,且存在元方法,可以索引到b表中对应的值
    print(a.v)               --22,设定关系后,b增加的属性,a也可以索引到
    print(b.aa)              --nil,相反,b并不可以索引到a的值
    
Lua
1
https://gitee.com/kenstime_admin/lua-nginx-redis.git
git@gitee.com:kenstime_admin/lua-nginx-redis.git
kenstime_admin
lua-nginx-redis
lua-nginx-redis
master

搜索帮助