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