2.6 lua break 与 return

和其他语言一样lua也提供对应的跳出关键字,不过lua不提供continue关键字。

break

语句break用于跳出循环,终止forrepeatwhile 三种循环的执行,并跳出当前循环体,继续执行当前循环之后的语句,在循环外部不可用。

return

return 只能写在语句块的最后,一旦执行了return 语句,该语句之后的所有语句都不会再执行。若要写在函数中间,则只能写在一个显式的语句块内。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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只出现在前面显式的语句块,所以此语句不注释也不会报错
--,但是不会被执行,此处不会产生输出
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

有时候,为了调试方便,我们可以想在某个函数的中间提前 return ,以进行控制流的短路。此时我们可以将 return 放在一个 do ... end 代码块中:

1
2
3
4
5
local function foo()
print("before")
do return end
print("after") -- 这一行语句永远不会执行到
end

特别注意:上述实例中return如果不放在do ... end中将会保存,因为return只能放在函数的最后。