2

我正在通过以下方式设置局部动态变量名称 _local["cracks"..brick.index] = ...

如何访问变量来执行例如 removeSelf?我试过的 _local["cracks"..brick.index]:removeSelf()

4

2 回答 2

5
_local["cracks"..brick.index]:removeSelf()
  1. 索引_local作为一个表"cracks"..brick.index来获取一个值,调用它t
  2. 索引t作为一个表"removeSelf"来获取另一个值,调用它m
  3. m作为方法 in调用t,这就像调用m(t)

为此,您必须执行以下操作:

_local["cracks"..brick.index] = 
{ 
    removeSelf = function(self)
        --do something with self, 
        --which refers to the table that removeSelf is a member of (the {})
        return --something if wanted 
    end 
}

通常,方法是使用function t:m() end隐式声明self参数的语法定义的。但是,如果没有实际变量,您就无法做到这一点t,在这种情况下没有实际变量。

或者,明确地

local tabl = {}
function tabl:removeSelf()
    --do something with self, 
    --which refers to the table that removeSelf is a member of (tabl)
    return --something if wanted 
end 

_local["cracks"..brick.index] = tabl

如果这不能解释您的要求,请在您的问题中添加更多代码。

于 2013-06-28T23:32:15.693 回答
2

不,你做错了。这是您应该如何做的:

local myTable = {}
myTable[brick.index] = image

然后你可以访问它:

myTable[brick.index]:removeSelf() 
于 2013-06-28T22:19:36.983 回答