lua 中的語句支援賦值,控制結構,函式呼叫,還有變數宣告。
不允許空的語句段,因此;;
是非法的。
chunck ::=
([';']
應該是表示語句組後面;
是可選項。)
block ::= chunck
stat ::= do block end
可以將乙個語句塊顯式地寫成語句組,可以用於控制區域性變數的作用範圍。
lua 支援多重賦值。
多重賦值時,按序將右邊的表示式的值賦值給左值。右值不足補 nil,右值多餘捨棄。
b = 1
a,b = 4 -- a = 4,b = nil
lua 在進行賦值操作時,會一次性把右邊的表示式都計算出來後進行賦值。
i = 5
i,a[i] = i+1, 7 -- i = 6 ,a[5] = 7
特別地,有
x,y = y,x -- 交換 x,y 的值
對全域性變數以及表的域的賦值操作含義可以在元表中更改。
if [exp]
[block]
elseif [exp]
[block]
else
[block]
end
while [exp]
[block]
end
repeat
[block]
until [exp]
注意,由於repeat
語句到until
還未結束,因此在until
之後的表示式中可以使用block
中定義的區域性變數。
例如:
a = 1
c = 5
repeat
b = a + c
c = c * 2
until b > 20
print(c) --> 40
do break end
for
迴圈的用法比較多,單獨拎出來講。
for
中的表示式會在迴圈開始前一次性求值,在迴圈過程中不再更新。
for [name] = [exp],[exp],[exp] do [block] end
三個 exp 分別代表初值,結束值,步進。exp 的值均需要是乙個數字。
第三個 exp 預設為 1,可以省略。
a = 0
for i = 1,6,2 do
a = a + i
end
等價於
int a = 0;
for (int i = 1; i <= 6;i += 2)
迭代器形式輸出乙個表時,如果表中有函式,則輸出的順序及個數不確定(筆者測試得出的結果,具體原因未知)。
迭代器形式的 for 迴圈的實質
-- 依次返回 迭代器、狀態表、迭代器初始值
function mypairs(t)
function iterator(t,i)
i = i + 1
i = t[i] and i -- 如果 t[i] == nil 則 i = nil;否則 i = i
return i,t[i]
endreturn iterator,t,0
end-- 乙個表
t =
-- 迭代形式 for 語句的 等價形式
dolocal f, s, var = mypairs(t)
while true do
local var1, var2 = f(s, var)
var = var1
if var == nil then break end
-- for 迴圈中新增的語句
print(var1,var2)
endend-- 迭代形式 for 語句
for var1,var2 in mypairs(t) do
print(var1,var2)
end--> 1 1
--> 2 2
--> 1 1
--> 2 2
5.2.1 陣列形式ary =
for i,v in ipairs(ary) do
print(v) --> 1 2
end
從1開始,直到數值型下標結束或者值為 nil 時結束。
5.2.2 表遍歷
table =
for k,v in pairs(table) do
print(v) --> 1 2 5
end
遍歷整個表的鍵值對。
參考鏈結
lua迭代器和泛型for(介紹 lua 迭代器的詳細原理以及使用)
lua筆記二 賦值語句
賦值是改變乙個變數的值和改變表域的最基本的方法。a hello world t.n t.n 1 lua可以對多個變數同時賦值,變數列表和值列表的各個元素用逗號分開,賦值語句右邊的值會依次賦給左邊的變數。a,b 10,2 x a 10 b 2 x 遇到賦值語句lua會先計算右邊所有的值然後再執行賦值操...
Lua 學習筆記(五) 語句
一 賦值 多重賦值 每個值或每個變數之間以逗號分隔 例如 a,b 10,20 lua先對等號右邊的所有元素求值,然後才執行賦值。二 區域性變數和塊 local建立區域性變數,作用域僅限於宣告它們的程式塊。三 控制結構 1.if then else end 例如 2.for 數值型for for va...
Lua 學習筆記(二)
這一章我們介紹一下lua中函式的宣告,其實函式這東西我們每個人都接觸過,就像我們初中高中學的一次函式 二次函式是一樣的。舉個簡單的例子吧,目前歐元匯率和人民幣匯率的比例是1歐元換7.2人民幣,那我們手裡有100歐元能換多少人民幣呢?如果是1000歐元呢?遇到這種問題的時候,我們就需要找到乙個規律,然...