文章出處

首先看看從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()

  


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()