我试图创建一个表示矩阵的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