【问题标题】:How to exit a Lua script's execution?如何退出 Lua 脚本的执行?
【发布时间】:2013-12-09 21:45:44
【问题描述】:

我想在某些情况下退出 Lua 脚本的执行。 示例:

内容 = 获取内容() 如果不满足,那么 - (这里我想要某种退出功能) 下一个内容 = 获取内容() --example 有很多进一步的检查

在这里我希望如果我没有获得内容我的脚本应该终止不应该去检查下一个。

【问题讨论】:

  • os.exit() 就是这样做的。

标签: lua


【解决方案1】:

如果您的脚本是嵌入的,则使用 os.exit() 或仅来自某个“主”函数的 return

【讨论】:

    【解决方案2】:
    os.exit()
    

    通过发送信号杀死进程

    do return end
    

    停止执行

    如果你想在解释器中编写和执行一些 luacode,然后通过使用-i 标志启动程序来停止执行,这两种方法是不相等的。

    th -i main.lua
    

    【讨论】:

    • 它们在哪些方面不相等?
    【解决方案3】:

    lua api doc 中提取:

    出于语法原因,break 或 return 只能作为块的最后一条语句出现(换句话说,作为块中的最后一条语句,或者就在 end、else 或 until 之前)。例如,在下一个示例中,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
    

    【讨论】:

      【解决方案4】:

      在 lua 5.2.0-beta-rc1+ 中,您可以在代码末尾添加一个名为 ::exit:: 或类似名称的标签,然后当您需要退出程序时,只需像这样调用它:

      goto exit
      

      【讨论】:

      • 不知道添加标签 ::exit:: 是什么意思,这是错字吗?我不认为这是正确的 lua 语法。
      • 这是有效的 Lua 语法
      • 好的,这是最新的lua。我试过旧的 lua 没用
      猜你喜欢
      • 2011-10-18
      • 1970-01-01
      • 2014-11-05
      • 2019-06-23
      • 2018-02-24
      • 1970-01-01
      • 2013-01-21
      • 2019-10-28
      • 2013-06-24
      相关资源
      最近更新 更多