兩個for循環的運算原理?
for循環是很多開發語言中最常用的一個循環。
for 有兩種形式:一種是數字形式,另一種是通用形式。
數字形式的 for 循環,通過一個數學運算不斷地運行內部的代碼塊。 下面是它的語法:
stat ::= for Name ‘=’ exp ‘,’ exp [‘,’ exp] do block end
block 將把 name 作循環變量。 從第一個 exp 開始起,直到第二個 exp 的值為止, 其步長為第三個 exp 。 更確切的說,一個 for 循環看起來是這個樣子
for v = e1, e2, e3 do block end
注意下面這幾點:
所有三個控制表達式都只被運算一次, 表達式的計算在循環開始之前。 這些表達式的結果必須是數字。
var,limit,以及 step 都是一些不可見的變量。 這里給它們起的名字都僅僅用于解釋方便。
如果第三個表達式(步長)沒有給出,會把步長設為 1 。
你可以用 break 和 goto 來退出 for 循環。
循環變量 v 是一個循環內部的局部變量; 如果你需要在循環結束后使用這個值, 在退出循環前把它賦給另一個變量。
通用形式的 for 通過一個叫作 迭代器 的函數工作。 每次迭代,迭代器函數都會被調用以產生一個新的值, 當這個值為 nil 時,循環停止。
注意以下幾點:
explist 只會被計算一次。 它返回三個值, 一個 迭代器 函數, 一個 狀態, 一個 迭代器的初始值。
f, s,與 var 都是不可見的變量。 這里給它們起的名字都只是為了解說方便。
你可以使用 break 來跳出 for 循環。
環變量 var_i 對于循環來說是一個局部變量; 你不可以在 for 循環結束后繼續使用。 如果你需要保留這些值,那么就在循環跳出或結束前賦值到別的變量里去