Как выйти из выполнения Lua script
Я хочу завершить выполнение Lua script при некотором условии.
Пример:
content = get_content()
if not content then
-- ( Here i want some kind of exit function )
next_content = get_content()
--example there can lot of further checks
Здесь я хочу, чтобы, если я не получаю контент, мой script предположим, что он завершен, не следует переходить к следующему.
Ответы
Ответ 1
извлечь из lua api doc:
Для синтаксических причин разрыв или возврат могут отображаться только как последний оператор блока (другими словами, как последнее утверждение в вашем куске или непосредственно перед концом, else или до). Например, в следующем примере break - это последний оператор блока then.
local i = 1
while a[i] do
if a[i] == v then break end
i = i + 1
end
Обычно это те места, где мы используем эти утверждения, потому что любое другое выражение, следующее за ними, недостижимо. Иногда, однако, может быть полезно написать возврат (или разрыв) в середине блока; например, если вы отлаживаете функцию и хотите избежать ее выполнения. В таких случаях вы можете использовать явный блок do вокруг оператора:
function foo ()
return --<< SYNTAX ERROR
-- `return' is the last statement in the next block
do return end -- OK
... -- statements not reached
end
Ответ 2
Используйте os.exit()
или просто return
из некоторой "основной" функции, если ваш script встроен.
Ответ 3
os.exit()
убить процесс, отправив сигнал
do return end
остановить выполнение
Два метода не равны, если вы хотите записать и выполнить некоторый luacode в интерпретаторе после остановки выполнения, запустив свою программу с помощью флага -i
.
th -i main.lua
Ответ 4
В lua 5.2.0-beta-rc1 + вы можете добавить метку в конце вашего кода под названием ::exit::
или что-то подобное, а затем, когда вам нужно выйти из программы, просто вызовите ее так:
goto exit