我大部分的编程工作都是用Python完成的,我在大多数项目中使用面向对象编程(OOP)。最近,我开始研究Love2D游戏库和引擎。我设法配置了一些东西,然后考虑创建一个GameObject类。但是,怎么回事?Lua没有类!它有表、元表和其他类似的东西。即使我已经多次阅读了文档,我仍然很难理解这个问题。
请看以下示例:
这的输出如下所示:
我不理解的是将cat1.type更改为“Dog”为什么不会在cat2和catClass中引起相同的变化。设置元表是否会创建表的副本?谷歌没有提供有用的结果(很少有好的Lua解释)。
请看以下示例:
catClass = {}
catClass.__index = catClass
catClass.type = "Cat"
function catClass.create(name)
local obj = setmetatable({}, catClass)
obj.name = name
return obj
end
cat1 = catClass.create("Fluffy")
print(cat1.type)
cat2 = catClass.create("Meowth")
cat1.type = "Dog"
print(cat1.type)
print(cat2.type)
print(catClass.type)
这的输出如下所示:
Cat
Dog
Cat
Cat
我不理解的是将cat1.type更改为“Dog”为什么不会在cat2和catClass中引起相同的变化。设置元表是否会创建表的副本?谷歌没有提供有用的结果(很少有好的Lua解释)。