Lua 函数在错误的“if语句”之后返回错误

我有一个将点移动到不同位置的函数。我有一个_positions_表,其中包含每个位置的X和Y,一个位置计数器(posCounter)来跟踪点的位置和一个_maxPos_,它基本上是表_positions_的长度。

在这段代码片段中,如果posCounter变量大于3,则在如果posCounter<=maxPos then之后的任何内容都不应运行, 但是我仍然因为超过表限制而出现错误。

local maxPos = 3
local posCounter = 1
local function movePointToNext( event )
    if posCounter<=maxPos then
        posCounter = posCounter + 1
        transition.to( pointOnMap, { x = positions[posCounter].x, y = positions[posCounter].y } )
    end
end

原文链接 https://stackoverflow.com/questions/70868630

点赞
stackoverflow用户2658050
stackoverflow用户2658050

如果 posCounter == maxPos 会发生什么?你的 if 会被执行,然后你对 posCounter 进行了 递增 操作,所以它就变得太大了(等于 maxPos + 1),之后你试图用它来进行索引,从而出现错误。

你需要将 if 改为 posCounter == maxPos - 1,这样在递增之后它仍然是正确的;或者将递增操作 移到 使用索引之后(取决于你的代码的预期行为)。

选项 1

local maxPos = 3
local posCounter = 1
local function movePointToNext( event )
    if posCounter < maxPos then
        posCounter = posCounter + 1
        transition.to( pointOnMap, {
            x = positions[posCounter].x,
            y = positions[posCounter].y } )
    end
end

选项 2

local maxPos = 3
local posCounter = 1
local function movePointToNext( event )
    if posCounter <= maxPos then
        transition.to( pointOnMap, {
            x = positions[posCounter].x,
            y = positions[posCounter].y } )
        posCounter = posCounter + 1
    end
end
2022-01-26 18:41:48