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  (新增加索引  或者 修改 值)

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