Lua 中的語句支持賦值,控制結構,函數調用,還有變量聲明。
不允許空的語句段,因此 ;; 是非法的。
1 語句組 | chuncks
([';'] 應該是表示語句組后面 ; 是可選項。)
2 語句塊 | blocks
可以將一個語句塊顯式地寫成語句組,可以用于控制局部變量的作用范圍。
3 賦值 | assignment
Lua 支持多重賦值。
多重賦值時,按序將右邊的表達式的值賦值給左值。右值不足補 nil,右值多余舍棄。
Lua 在進行賦值操作時,會一次性把右邊的表達式都計算出來后進行賦值。
特別地,有
x,y = y,x -- 交換 x,y 的值
+++
對全局變量以及表的域的賦值操作含義可以在元表中更改。
4 控制結構
4.1 條件語句
4.2 循環語句
repeat
[block]
until [exp]
注意,由于 repeat 語句到 until 還未結束,因此在 until 之后的表達式中可以使用 block 中定義的局部變量。
例如:
4.3 break 和 return
break 和 return 只能寫在語句塊的最后一句,如果實在需要寫在語句塊中間,那么就在兩個關鍵詞外面包圍 do end 語句塊。
do break end
5 For 循環
for 循環的用法比較多,單獨拎出來講。
for 中的表達式會在循環開始前一次性求值,在循環過程中不再更新。
5.1 數字形式
for [Name] = [exp],[exp],[exp] do [block] end
三個 exp 分別代表初值,結束值,步進。exp 的值均需要是一個數字。
第三個 exp 默認為 1,可以省略。
等價于
5.2 迭代器形式
迭代器形式輸出一個表時,如果表中有函數,則輸出的順序及個數不確定(筆者測試得出的結果,具體原因未知)。
迭代器形式的 for 循環的實質
-- 依次返回 迭代器、狀態表、迭代器初始值
-- 一個表
t = {[1]="1",[2]="2"}
-- 迭代形式 for 語句的 等價形式
-- for 循環中添加的語句
print(var1,var2)
end
end
-- 迭代形式 for 語句
--> 1 1
--> 2 2
--> 1 1
--> 2 2
5.2.1 數組形式
從1開始,直到數值型下標結束或者值為 nil 時結束。
5.2.2 表遍歷
遍歷整個表的鍵值對。
關于迭代器的更多內容,可參考Lua 迭代器和泛型 for。
以上所述就是本文的全部內容了,希望大家能夠喜歡。
新聞熱點
疑難解答