在lua中, return的用法比較"詭異", 為什麼這麼說呢, 因為它只能用在block結束的地方, 不能用在block的乙個中間部分.
例如
function a()
i = 1
return i -- 這裡會報錯, 提示return後面必須是end, 意思是既然你要return了, 那麼就結束這個塊吧.
i = 2
end
例如 :
> function a()
>> i = 1
>> return i
>> i = 2
stdin:4: 'end' expected (to close 'function' at line 1) near 'i'
那麼如果要在乙個函式或者乙個block的非末尾部分使用return 怎麼用呢?
可以把return 包在do end之間. 例如 :
> function a()
>> i = 1
>> do return i end -- 這裡是允許的.
>> i = 2
>> end
> print(a())
1
另外, return在迴圈, 判斷中的使用也和函式中類似, 必須使用在迴圈結束, 或者判斷的乙個拐點結束前. 例如 :
> if i == 1
>> then
>> return -- 這裡不能使用, 因為下面不是elseif或者else或者end.
>> i=2
stdin:4: 'end' expected (to close 'if' at line 1) near '='
所以在判斷中, 放在乙個拐點結束前 :
if i == 1
then
return
elseif i == 2
then
return
else
return
end
-- 以上用法是可以的, return分別放在elseif, else, end前面. 拐點 結束前.
在迴圈中使用則放在迴圈結束前.
但是你會發現, 如果結束處用的是乙個print函式, 居然不報錯 :
> for x=1,10,1 do
>> print(x)
>> return
>> print(x+1)
>> end
12
return後面換成賦值就報錯了
> for x=1,10,1 do
print(x)
return
print(x+1)
x=2stdin:4: 'end' expected (to close 'for' at line 1) near 'x'
> for x=1,10,1 do
print(x)
return
x=2
stdin:4: 'end' expected (to close 'for' at line 1) near '='
"詭異"來形容不為過.
還是得把return包在乙個do end裡面
> for x=1,10,1 do
print(x)
do return end
print(x)
x=2>> end
1
用在repeat中
> repeat do
i=1print(i)
return
print(i)
end until i == 211
> repeat do
i=1print(i)
return
print(i)
x=2 -- 這裡又會報錯.
end until i == 2
stdin:4: 'end' expected (to close 'do' at line 1) near 'x'
lua 詭異 的return用法
德哥摘要 在lua中,return的用法比較 詭異 為什麼這麼說呢,因為它只能用在block結束的地方,不能用在block的乙個中間部分.例如function a i 1 return i 這裡會報錯,提示return後面必須是end,意思是既然你要return了,那麼就結束這個塊吧.在lua中,r...
lua 中return與break的用法
記錄 lua提供的跳出關鍵字 break 和 return,lua不提供continue.語句break用於跳出迴圈,終止for repeat while 三種迴圈的執行,並跳出當前迴圈體,繼續執行當前迴圈之後的語句,在迴圈外部不可用。例 定義變數 a 10 while 迴圈 while a 20 ...
return語句的用法
return語句用於退出函式,向呼叫方返回乙個表示式。return在不帶引數的情況下 或者沒有寫return語句 預設返回none。none是乙個特殊的值,它的資料型別是nonetype。nonetype是python的特殊型別,它只有乙個取值none。它不支援任何運算也沒有任何內建方法,和任何其他...