lua 中的元表

a={

     age=0,

  __tostring=function()

    {

    },

__call=function()

    {

    },

}

b={}

a.__index=a{}//将a表中的__index指向自己

setmetatable(a,b)//将b设置为a的元表;

__tostring

当子表a被当做字符串使用时会调用原表b中的__tostring方法,

__call

当子表a被当做字符串使用时会调用原表b中的__call方法

__index

当b.age是会先寻找b表中的age属性,没找到时会在原表中__index指向的表中去寻找

__newindex

b.name  a,b表中都没有name属性,执行b.name="123"会在b表中生成属性name="123",如果设置

a.__newindex={}        会把name生成到__newindex指向的表中去

猜你喜欢

转载自blog.csdn.net/m0_56283466/article/details/136768739