# Lua for 循環
Lua 編程語言中 for 循環語句可以重復執行指定語句,重復次數可在 for 語句中控制。
Lua 編程語言中 for語句有兩大類::
* 數值for循環
* 泛型for循環
## 數值for循環
Lua 編程語言中數值for循環語法格式:
```
for var=exp1,exp2,exp3 do <執行體> end
```
var從exp1變化到exp2,每次變化以exp3為步長遞增var,并執行一次"執行體"。exp3是可選的,如果不指定,默認為1。
### 實例
```
for i=1,f(x) do print(i) end for i=10,1,-1 do print(i) end
```
for的三個表達式在循環開始前一次性求值,以后不再進行求值。比如上面的f(x)只會在循環開始前執行一次,其結果用在后面的循環中。
驗證如下:
```
#!/usr/local/bin/lua function f(x) print("function") return x*2 end for i=1,f(5) do print(i) end
```
以上實例輸出結果為:
```
function 1 2 3 4 5 6 7 8 9 10
```
可以看到 函數f(x)只在循環開始前執行一次。
## 泛型for循環
泛型for循環通過一個迭代器函數來遍歷所有值,類似java中的foreach語句。
Lua 編程語言中泛型for循環語法格式:
```
--打印數組a的所有值 for i,v in ipairs(a) do print(v) end
```
i是數組索引值,v是對應索引的數組元素值。ipairs是Lua提供的一個迭代器函數,用來迭代數組。
### 實例
循環數組 days:
```
#!/usr/local/bin/lua days = {"Suanday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"} for i,v in ipairs(days) do print(v) end
```
以上實例輸出結果為:
```
Suanday Monday Tuesday Wednesday Thursday Friday Saturday
```
- Lua 簡介
- Lua 環境安裝
- Lua 數據類型
- Lua 變量
- Lua 循環
- Lua while 循環
- Lua for 循環
- Lua repeat...until 循環
- Lua 循環嵌套
- Lua break 語句
- Lua 流程控制
- Lua if 語句
- Lua if...else 語句
- Lua if 嵌套語句
- Lua 函數
- Lua 運算符
- Lua 字符串
- Lua 數組
- Lua 迭代器
- Lua table(表)
- Lua 模塊與包
- Lua 元表(Metatable)
- Lua 協同程序(coroutine)
- Lua 文件 I/O
- Lua 錯誤處理
- Lua 調試(Debug)
- Lua 垃圾回收
- Lua 面向對象
- Lua 數據庫訪問