1.局部變量與塊
--控制結構或函數或者程式塊的執行體成為塊 互動模式下一行算一個塊是以如下:
--可以顯示的用do end 來劃定塊 局部變量隻在目前的塊中有用
local a,b=1,10
if a<b then
print(a)
local a --會比對一個最近的有效果的局部變量
print(a)
end
print(a,b)
n=10
if n<=10 then
local n = n --可以利用這種特點将全局變量的值賦給局部變量,進而儲存全局變量
n = n-1
print(n)
end
print(n)
2.控制結構
--控制結構 循環和分支
--1.if then (elseif then) (else) end
a=10
a=9
a=8
if a==10 then
print(a)
elseif a==9 then
print(2*a)
else
print("a:"..a)
end
if a<=10 then
print("哈哈哈哈哈哈哈")
end
--2. while循環
i=5
while i<=10 do
print(i)
i=i+1
end
--3.類似于C中do while 循環的 repeat until
t=2;
repeat
t=io.read("*number")
until t==6
print(t)
--3.數字型for循環 執行個體中的i預設為局部變量并且 i=1,9,2隻會在一開始時初始化一次
--表示i從1開始每次遞增2 i<=9翁跫
for i=1,9,2 do
print(i)
end
--泛型for循環主要是針對表和檔案操作的 需要用到疊代器函數
b={1,2,3,4,5,6}
for k,v in pairs(b) do
print(k,v)
end
--break 與 return必須是一個塊最後一條語句 即是一個程式塊最後一個語句或者是end else 或 until 的前一條語句
local i = 1
for i=1,#b do
if(i==5) then --ok
print(i)
break;
end
end
--[[local i = 1
for i=1,#b do --錯誤的
if(i==5) then
break;
print(i)
end
end]]
3.指派
--多重指派
a,b=1,2;
print(a.." "..b)
a,b=1,2,3;
print(a.." "..b)
--a,b=1;
print(a.." "..b)
--利用多重指派交換
a=3
b=4
a,b=b,a
print(a.." "..b)
4.函數的多重傳回值
--函數形參可以與傳的實參個數不同,此時,若形參多,則多餘的形參被指派為nil,若實參多,則多餘的實參被舍棄掉
--比較奇葩的地方:當形參隻有一個并且是字元串或table類型的變量時 調用時可以不加括号
function printstring(n)
print(n)
end
printstring "123"
function printfive(a,b,c,d,e)
print(a,b,c,d,e)
end
printfive(1,2,3)
printfive(1,2,3,4,5,6)
--多重傳回值 不管是指派,函數中調用函數,把傳回值給一個表 還是位于return語句中 都隻能在它位于最後時才起作用
--指派的情況
--1.能夠傳回多個值 位于指派的最後面的一個
function f()
return 1,2,3
end
a,b,c = f()
print(a,b,c)
a,b,c,d = 9,f()
print(a,b,c,d)
--2.不能傳回多個值 不是位于指派的最後面一個不會傳回多個值
a,b,c = f(),4
print(a,b,c)
--函數調用函數的情況,同理 還是拿f為例
print(f())
print(4,5,6,f())
print(f(),4,5,6)
--把傳回值傳給一個表
function f0()
return 0,2,4
end
function f1()
return 1,3,5
end
h={f0()}
for k,v in pairs(h) do
print(k,v)
end
h={f0(),f1()}
for k,v in pairs(h) do
print(k,v)
end
--return中調用傳回多個值的函數,同理
function f2()
return f1(),8
end
print(f2())
function f3()
return 8,f1()
end
print(f3())
--若傳回多值的表達式加了括号,盡管它是最後一個,但它僅傳回一個值
print((f3()))
--unpack 它接受一個數組作為參數,并且從1開始傳回該數組的所有元素
a={1,2,3,4,5,6,7,8,9,10}
c,d = unpack(a) --注意,這樣指派,c和d都是number類型
print(c,d)
print(unpack(a))
print((unpack(a)))