如何使用动态变量名工作?

我用以下方式设置一个局部动态变量名称 _local["cracks"..brick.index] = ...

然后我如何访问这个变量来执行例如removeSelf操作呢? 我尝试过 `_local["cracks"..brick.index]:removeSelf()

点赞
用户1502079
用户1502079

不,你做错了。以下是正确的做法:

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

然后你可以通过以下方式访问它:

myTable[brick.index]:removeSelf()
2013-06-28 22:19:36
用户2226988
用户2226988
_local["cracks"..brick.index]:removeSelf()

_local 数组中的名为 cracks 加上 brick.index 的值所组成的字符串作为 key,调用该 key 对应的 value 中名为 removeSelf 的函数,然后执行它。

为了让这个代码能起作用,需要在之前有类似以下的代码:

_local["cracks"..brick.index] =
{
    removeSelf = function(self)
        -- 做某些操作,
        -- self 指代该 table,也就是 {} 中的表
        return -- 可选的返回值
    end
}

通常情况下,方法的定义是使用 function t:m() end 这种语法来表示,它隐含了 self 参数。但是这种语法在实际使用中会需要 t 变量,而在这个例子中没有这个变量。

或者,也可以这么写:

local tabl = {}
function tabl:removeSelf()
    -- 做某些操作,
    -- self 指代该 table,也就是 tabl
    return -- 可选的返回值
end

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

如果需要更多解释,请在问题中添加更多的代码。

2013-06-28 23:32:15