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

时间:2015-06-21 20:33:29

标签: lua

我试图在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,所以我想知道是否没有更好的方法来实现这一目标。

1 个答案:

答案 0 :(得分:4)

循环变量仅在for循环块中可见。您可以按PIL 4.3.4 Numeric For中的建议创建另一个变量来解决这个问题。

  local index
  for j=1,100 do
     if j == 10 then
       index = j
     end
  end

或者,如果您正在进行常规操作,那么使用具有早期返回功能可能是最好的。

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