在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
转自:http://www.cnblogs.com/tudas/p/how-to-understand-lua-oo-self__index.html
-- 当从表t中查找键k时,lua处理如下: -- 1.t中是否有k,有则直接返回值,否则第2步 -- 2.t是否有元表, 无则返回nil, 有则第3步 -- 3.t的元表是否有__index元方法, 无则返回nil, 有则查找__index指向的表或对应的方法 ---注意两种写法 -- 写法1, 可以保持继承链 local class = {} function class:new() self.__index = self return setmetatable( {}, self ) end function class:say() print(111) end local o1 = class:new() o1.say() local o2 = o1:new() o2.say() --- 写法2, 只能继承1次, 第2次派生时没了__index元方法 local class = {} class.__index = class function class:new() return setmetatable( {}, self ) end function class:say() print(111) end local o1 = class:new() o1.say() -- 第2次继承失败了, 因为o1并没有__index元方法 local o2 = o1:new() o2.say()
|
请发表评论