为什么 if then return break end 在 Lua 的 for 循环中不起作用

sce*_*ler 0 lua

我有以下函数,它检查是否在键值表中找到给定参数作为键。如果是这种情况,它应该返回true并跳出循环。如果什么也没找到,那就什么也不做。

function checkId(id)
  for k,v in pairs(info) do
    if id == tostring(k) then
      return true
      break -- break out of loop. mission accomplished.
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我得到一个

预期“end”(在第 192 行关闭“do”)接近“break”

当我尝试运行这个脚本时。我缺少什么?

Eta*_*ner 5

从逻辑上讲你不能return 并且 break喜欢那样。

return立即退出该函数(因此您不需要break)。

该特定错误是因为在 lua 中return必须是块中的最后一个语句。

  • 在每个最近的 Lua 版本中,“return”必须是块中的最后一个语句。`break` 取消了这个限制,因为它无论如何都不能接受参数。 (2认同)