lua継承中self._index=selfの疑い解き

749 ワード

原文:http://www.bubuko.com/infodetail-1642615.html
まず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()