1. 程式人生 > 其它 >lua基本語法之分支結構

lua基本語法之分支結構

一)條件 - 控制結構 if-else

if-else 是我們熟知的一種控制結構。Lua 跟其他語言一樣,提供了 if-else 的控制結構。

1)單個 if 分支 型

if 條件 then
  --body  
end
條件為真 ,執行if中的body
-----------------------
x = 10
if x > 0 then
    print("分支一")
end
----
x = 10
if (x > 0) then
    print("分支一")
end

執行輸出:分支一

2)兩個分支 if-else 型

if 條件 then
  --條件為真 執行此body  
else
  --條件為假 執行此body
end
----------
x = 10
if x > 0 then
    print("分支一")
else
    print("分支二")
end
執行輸出:分支一

3)多個分支 if-elseif-else 型

if 條件一 then
  --條件為真 執行此body  
elseif  條件二  then
  .....
elseif  條件三  then
  .....
else
  --條件為假 執行此body
end


score = 90
if score == 100 then
    print("分支一")
elseif score >= 60 then
    print("分支二")
--此處可以新增多個elseif
else
    print("分支三")
end
執行輸出:分支二

與 C 語言的不同之處是 else 與 if 是連在一起的,若將 else 與 if 寫成 "else if" 則相當於在 else 裡巢狀另一個 if 語句,如下程式碼:

score = 0
if score == 100 then
    print("分支一")
elseif score >= 60 then
    print("分支二")
else
    if score > 0 then
        print("分支三")
    else
        print("分支四")
    end --與上一示例程式碼不同的是,此處要新增一個end
end
執行輸出:分支四

二)迴圈 - while 型控制結構

Lua 跟其他常見語言一樣,提供了 while 控制結構,語法上也沒有什麼特別的。但是沒有提供 do-while 型的控制結構,但是提供了功能相當的 repeat。
while 型控制結構語法如下,當表示式值為假(即 false 或 nil)時結束迴圈。也可以使用 break 語言提前跳出迴圈。

while 條件表示式 do
--body
end
示例程式碼,求 1 + 2 + 3 + 4 + 5 的結果

x = 1
sum = 0

while x <= 5 do
    sum = sum + x
    x = x + 1
end
print(sum)  -->output 15

continue繼續執行,lua是沒有這個概念

break 終端迴圈,lua是有的

值得一提的是,Lua 並沒有像許多其他語言那樣提供類似 continue 這樣的控制語句用來立即進入下一個迴圈迭代(如果有的話)。因此,我們需要仔細地安排迴圈體裡的分支,以避免這樣的需求。
沒有提供 continue,卻也提供了另外一個標準控制語句 break,可以跳出當前迴圈。例如我們遍歷 table,查詢值為 11 的陣列下標索引:

local t = {1, 3, 5, 8, 11, 18, 21}

local i = 1

while i < #t do
    if 11 == t[i] then
        print("index[" .. i .. "] have right value[11]")
        break
    end
  
  i = i + 1;
end

三)迴圈 - repeat 控制結構

repeat  ---重複執行
    --body
until 條件       條件為真時就結束

1)until的條件表示式 為真 就結束

2)repeat until 控制結構 ,他至少會執行一遍

Lua 中的 repeat 控制結構類似於其他語言(如:C++ 語言)中的 do-while,但是控制方式是剛好相反的。簡單點說,執行 repeat 迴圈體後,直到 until 的條件為真時才結束,而其他語言(如:C++ 語言)的 do-while 則是當條件為假時就結束迴圈。
以下程式碼將會形成死迴圈:

x = 10
repeat
    print(x)
until false

該程式碼將導致死迴圈,因為until的條件一直為假,迴圈不會結束
除此之外,repeat 與其他語言的 do-while 基本是一樣的。同樣,Lua 中的 repeat 也可以在使用 break 退出。