如何使用动态变量名?

时间:2013-06-28 21:46:31

标签: lua corona

我正在以下列方式设置本地动态变量名称 _local["cracks"..brick.index] = ...

我怎么能访问变量来做例如removeSelf? 我试过的 _local["cracks"..brick.index]:removeSelf()

2 个答案:

答案 0 :(得分:5)

_local["cracks"..brick.index]:removeSelf()
  1. _local索引为"cracks"..brick.index的表格以获取值,将其称为t
  2. t索引为"removeSelf"的表格以获取另一个值,将其称为m
  3. m中调用t作为方法,就像调用m(t)
  4. 一样

    要做到这一点,你必须做这样的事情:

    _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变量,你就无法做到这一点,在这种情况下,没有。{/ p>

    或者,明确地

    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
    

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

答案 1 :(得分:2)

没有。你做错了。这是你应该怎么做的:

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

然后你可以访问它:

myTable[brick.index]:removeSelf()