2015-06-21 210 views
3

我想在Lua的循环中找到一些东西,当我完成后我需要使用我找到的位置。如何在循环结束时保留for循环变量的值?

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

不幸的是,我得到这表明for循环退出后,j值是零误差。我如何使用j结束的价值?很明显,我可以创建一个额外的变量,并在我休息之前分配它,但这似乎是错误的,我从来没有看到另一种语言将循环变量设置为零,当循环结束时,所以我想知道是否没有一个更好的方法来实现这一点。

+0

@ agentb26:我不相信这会起作用。您可以在循环之前创建另一个变量j,但它是一个单独的变量,其值不会受到循环的影响。循环变量j在循环外仍然不可用。请参阅http://ideone.com/OJuOUv –

回答

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