牛横的元表

1、childtable=setmetatable({},{

         A :__index=function(childtable,key)

                         end

         B:__index={xkey=6}

         以上两种当访问子表不存在的键时,会到元表中查找__index,如果不存在返回nil

 

         C:__newindex=function(childtable,k,v)

                                    rawset(childtable,k,v);--可以利用这个特性,当给表赋值时,进行校验之类操作

                              end

         D:__newindex={}

         以上两种情况,当给子表赋予不存在的键值时,会去原表中找__newindex

 

         E:运算符

            __add(childtable,newtable)--当childtable+newtable时调用

         F:__call(childtable,newtable)--当childtable(newtable)时,调用

        G:__tostring(mytable)--当print(childtable)

          mytable = setmetatable({ 10, 20, 30 }, {
                         __tostring = function(mytable)
                        sum = 0
                       for k, v in pairs(mytable) do
                          sum = sum + v
                        end
              return "表所有元素的和为 " .. sum
          end
})
print(mytable)

});

posted @ 2019-10-10 20:16  FromScratch  阅读(129)  评论(0编辑  收藏  举报