賦值
基礎賦值
a = 10
tab.name = "name"
多重賦值
a,b = 10,"abc"
a,b = b,a --交換兩個變量 多重賦值時,注意左右格數不匹配的情況
a,b,c = 0,1 print(a,b,c)
輸出
0,1,nil
a,b,c = 0 print(a,b,c)
輸出
nil.nil,0
局部變量與塊(block)
使用local創建局部變量。
local i =1 --局部變量
m = 20 --全局變量
局部變量的作用域僅限於聲明它們的那個塊。一個塊是一個控制結構的執行體、或者是一個函數的執行體再或者是一個程序塊。
x = 10 --全局變量
local i =1
while i<= x do
local x = i*2 --x爲局部變量
print(x) --輸出2、 4、 6 、8..
i = i+1
end
if i > 20 then
local x --局部變量
x = 20
print(x+2) --輸出22
else
print(x) --全局變量 輸出10
end
一個局部變量通常會隨着其作用域的結束而消失,GC便可釋放其值。訪問局部變量速度比全局變量速度快。
控制結構
if then else 流程控制
local a = 20
if a < 10 then
print("the number less than 10")
elseif a < 15 then
print("the number between 10 and 15")
elseif a < 20 then
print("the number between 15 and 20")
else
print("the number more than 20")
end
由於lua不支持switch語句,所以這一連串的if -elseif 代碼是很常見的。
while
與其他語言中的while不同,lua先測試while條件。如果條件爲false,那麼循環接結束。
local i=1
while i < 20 do
print("name"..i)
i = i+1 -- lua中沒有自增++ 自減--運算符
end
repeat
一條repeat -until語句重複執行知道條件爲真結束
local i = 1
repeat
i = i+1
print("name"..i)
until i > 20
for
數字型for
for var = exp1,exp2,exp3 do
<執行體>
end
var 從exp1變化到exp2,每次變化以exp3作爲步長,並執行一次執行體
其中exp3是可選的,默認爲1
for循環打印前十的偶數
for i = 2,10,2 do
print(i)
end
泛型for
通過迭代器函數來遍歷所有值
local tab = {"one","two","three"}
for i,v in ipairs(tab) do
print(i,v)
end
輸出
1 one
2 two
3 three
注意:
pairs遍歷表中全部key,value
ipairs從下標爲1開始遍歷,然後下標累加1,如果某個下標元素不存在就終止遍歷。這就導致如 果下標不連續或者不是從1開始的表就會中斷或者遍歷不到元素。即ipairs必須按照索引遞增遍歷。
break與return
break和return語句用於跳出當前塊。並且break和return只能是一個塊的最後一條語句。