# 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 數據庫訪問
- CoverPage