如何用 Lua 中的表格替换打印的字符串,Love2D

How do I replace a printed string with tables in Lua, Love2D

当我按下鼠标右键时,我一直在尝试打印 "mode" table 中的第二个字符串。 但是当我点击按钮时,它打印 "mode: 1" 而不是 "mode: circle"。这是我的代码:

function love.load()
mode = {"square", "circle"}
currentMode = mode[1]
end

function nextMode()
currentMode = next(mode)
print(currentMode)
end

function love.draw()
love.graphics.print("mode: " .. currentMode, 10, 10)
end

function love.mousepressed(x, y, button)
if button == "r" then
nextMode()
end
end

有人可以告诉我我做错了什么并纠正我吗?

next returns 索引和值但没有状态,因此有第二个参数,您将前一个索引传递给该参数。

一般nextIndex, nextValue = next(mytable, previousIndex)

在您的示例中,您的 currentMode 被分配 nextIndex,这是 "circle" 的索引并且值为 2。

这是一个工作示例:

function love.load()
   mode = {"square", "circle"}
   currentIndex, currentMode = next(mode)
end


function love.mousepressed(x, y, button)
    if button == "r" then
       currentIndex, currentMode = next(mode, currentIndex)
    end
end

function love.draw()
   love.graphics.print("mode: "..currentMode, 10, 10)
end