lua元方法的简单介绍

关于lua元方法,其实个人理解,简单来说就是:

1.在调用table不存在的字段时,会调用__index元方法。

下面简单写一段代码来示范一下:

local myTable={

       dog="狗狗",

}

local fun={

        _index=function(table,key)

               print("这里没有你要的东西哟,不过我知道你要找:"..key);

        end

}

//设置元方法

setmetatable(myTable,fun);

print(myTable.cat);

输出如下:

这里没有你要的东西哟,不过我知道你要找:cat

nil

当我们调用myTable.cat时,发现myTable里面没有这个字段,因此调用元方法fun得到此打印结果。



2.当调用了不存在的字段时,就会调用table元表里的__index元方法,如果这个__index元方法也是一个table的话,就会在这个table里查找字段,并调用

local myTable={

       dog="狗狗",

}

local fun={

        _index={

                 cat="猫猫"

}

}

//设置元方法

setmetatable(myTable,fun);

print(myTable.cat);

输出如下:

猫猫

当我们调用 myTable.cat时,发现myTable里面没有这个字段,然后调用元方法fun,发现元方法是一个table,因此到table里面查找这个字段,发现cat字段是:猫猫



个人理解元方法就是这个意思,不外乎就是在当我们调用table里面不存在的字段时的一个特殊处理罢了,


猜你喜欢

转载自blog.csdn.net/u014417405/article/details/52424113
今日推荐