Lua 學習_5 元表

                                            Lua 學習  元表


原表  meta table

setmetatable  可以設置元表   __index (讀取),  __newindex  (新增加索引  或者 修改 值)

元表可以實現 繼承, 有點類似 JavaScript 中的 原型鏈   只實現 __index

-- 原表  meta table  __index (讀取),  __newindex  (新增加索引  或者 修改 值)

CMonster = { 
    name = "monster", 
    hp = 100,
    TakeDamage = function ( self, damage )
        self.hp = self.hp - damage
    end
}

objMonster = {}

setmetatable(objMonster, {__index = CMonster})

print(objMonster.hp)
objMonster:TakeDamage(11)

print(objMonster.hp)
print(CMonster.hp)

----看上去好像對了----  

元表可以實現 繼承, 有點類似 JavaScript 中的 原型鏈   實現 __index  __newindex;

可以實現多個實例共享一份變量 類似靜態變量

-- 原表  meta table

CMonster = { 
    name = "monster", 
    hp = 100,
    TakeDamage = function ( self, damage )
        self.hp = self.hp - damage
    end
}

objMonster = {}

setmetatable(objMonster, {
    __index = CMonster,
    __newindex = CMonster
})

print(objMonster.hp)
objMonster:TakeDamage(11)

print(objMonster.hp)
print(CMonster.hp)

----看上去好像對了----  __index (讀取),  __newindex  (新增加索引  或者 修改 值)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章