Skip to content

Latest commit

 

History

History
16 lines (15 loc) · 1 KB

self__index.md

File metadata and controls

16 lines (15 loc) · 1 KB

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的值