語句 break
用來終止 while
、repeat
和 for
三種循環(huán)的執(zhí)行,并跳出當(dāng)前循環(huán)體,
繼續(xù)執(zhí)行當(dāng)前循環(huán)之后的語句。下面舉一個 while
循環(huán)中的 break
的例子來說明:
-- 計算最小的x,使從1到x的所有數(shù)相加和大于100
sum = 0
i = 1
while true do
sum = sum + i
if sum > 100 then
break
end
i = i + 1
end
print("The result is " .. i) -->output:The result is 14
在實(shí)際應(yīng)用中,break
經(jīng)常用于嵌套循環(huán)中。
return
主要用于從函數(shù)中返回結(jié)果,或者用于簡單的結(jié)束一個函數(shù)的執(zhí)行。
關(guān)于函數(shù)返回值的細(xì)節(jié)可以參考 函數(shù)的返回值 章節(jié)。return
只能寫在語句塊的最后,一旦執(zhí)行了 return
語句,該語句之后的所有語句都不會再執(zhí)行。若要寫在函數(shù)中間,則只能寫在一個顯式的語句塊內(nèi),參見示例代碼:
local function add(x, y)
return x + y
--print("add: I will return the result " .. (x + y))
--因為前面有個return,若不注釋該語句,則會報錯
end
local function is_positive(x)
if x > 0 then
return x .. " is positive"
else
return x .. " is non-positive"
end
--由于return只出現(xiàn)在前面顯式的語句塊,所以此語句不注釋也不會報錯
--,但是不會被執(zhí)行,此處不會產(chǎn)生輸出
print("function end!")
end
sum = add(10, 20)
print("The sum is " .. sum) -->output:The sum is 30
answer = is_positive(-10)
print(answer) -->output:-10 is non-positive
有時候,為了調(diào)試方便,我們可以想在某個函數(shù)的中間提前 return
,以進(jìn)行控制流的短路。此時我們可以將 return
放在一個 do ... end
代碼塊中,例如:
local function foo()
print("before")
do return end
print("after") -- 這一行語句永遠(yuǎn)不會執(zhí)行到
end