当循环结束后,如何保留for循环变量的值?

我正在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,因此我想知道是否有更好的方法来完成这个任务。

点赞
用户2726734
用户2726734

循环变量仅在 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
2015-06-21 21:13:43