如何在循环结束时保留 for 循环变量的值?

How do I retain the value of a for loop variable when the loop is over?

我试图在 Lua 中循环查找某些内容,完成后我需要使用找到的位置。

for j = 1,100 do
    <do some stuff>
    if <some test> then
            break
    end
end
if j >= 100 then
    return
end

不幸的是,我得到一个错误,提示在 for 循环退出后,j 的值为 nil。我如何使用 j 结束的值?显然我可以创建一个额外的变量并在我中断之前分配它,但这似乎是错误的,而且我从未见过另一种语言在循环结束时将循环变量设置为 nil,所以我想知道是否没有一个更好的方法来完成这个。

循环变量仅在 for 循环块内可见。您可以按照 PIL 4.3.4 Numeric For.

中的建议创建另一个变量来解决这个问题
  local index
  for j=1,100 do
     if j == 10 then
       index = j
     end
  end

或者,如果您正在执行常见操作,那么最好使用具有早期 return 的函数。

     function find(tbl, val)
        for i, v in ipairs(tbl) do
          if v == val then
            return i
          end
        end
     end