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