我試圖創建一個表示矩陣的Lua表,但是如果我創建兩個矩陣並初始化某些值,它們都具有相同的值。即使對於新對象,Lua表變量也是一樣的
--Test.Lua
require"Matrix"
M1 = Matrix.Matrix:New()
M2 = Matrix.Matrix:New()
M1._11 = 2
print(M1._11) --Prints 2
print(M2._11) --Prints 2
--Matrix.lua
module("Matrix", package.seeall)
Matrix = {}
Matrix = { _11 = 0, _12 = 0, _13 = 0,
_21 = 0, _22 = 0, _23 = 0,
_31 = 0, _32 = 0, _33 = 0
}
function Matrix:New()
object = object or {}
setmetatable(object, self)
self.__index = self
return object
end
那好吧,我把新的方法從編程在Lua中,也許我沒有正確地實現它。我將如何解決這個問題? – RedShft 2012-04-12 22:52:45
@RedShft:我會建議回頭看看「Lua編程」和*理解*它在做什麼以及它爲什麼這樣做,而不是僅僅複製和粘貼代碼。它使用元表中沒有被使用的方式你(有PIL,它的存儲數據的對象;所述元表只存儲特定功能並且這樣的)。另外,PIL的'new'函數可以選擇一個對象作爲參數;這就是爲什麼他們做了「o = o或{}」的事情。你的函數只是使用一個名爲'object'的全局變量,因爲你忘記把'object'作爲參數。請注意,這不會解決您的問題。 – 2012-04-12 22:58:30
你拒絕向我解釋?好。 – RedShft 2012-04-12 23:03:04