我在Python中完成了大部分編程,並且我在大多數項目中都使用了OOP實踐。我最近開始看看Love2D遊戲庫和引擎。我設法配置了一些東西,然後考慮製作一個GameObject類。但是,這是什麼? Lua沒有課程!它有表格,metatables和其他類似的東西。即使在多次閱讀文檔後,我仍然遇到很多麻煩。在Lua中實現OOP的意義
請看下面的例子:
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爲「狗」,不相同cat2和catClass的變化。設置metatable是否創建表的副本? Google沒有提供有用的結果(很少有很好的Lua解釋)。