2015-06-21 90 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