文章出處
文章列表
首先看看從lua表中查找一個鍵時的流程:
-- 當從表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()
文章列表
全站熱搜