lua - Lua为什么要这样调整结果呢?

标签 lua

我正在阅读 Lua 引用手册,它说:

Both function calls and vararg expressions can result in multiple values. [...] If an expression is used as the last (or the only) element of a list of expressions, then no adjustment is made (unless the call is enclosed in parentheses). In all other contexts, Lua adjusts the result list to one element, discarding all values except the first one.

这个选择有什么好处?

它与其他编程语言通用吗?

最佳答案

其他允许可变参数函数和多个返回值的语言通常要求您更加明确。他们没有像 Lua 那样有一个无声的捷径来获取第一个项目。以下是使用 Lua 方式进行此操作的一些可能原因:

  • 最重要的原因可能是可以从多个值中获取显式项目的数量,即使它们以 nil 结尾。请参阅selecttable.pack 。隐式转换为表将丢失此信息。
  • 您可以向 return 语句添加第二个值,而不会破坏向后兼容性。否则,调用代码必须更改才能访问第一个返回值。
  • 有时,第二个返回值是错误消息。 Lua 让我们假装函数只有一个返回值来忽略错误。 (尽管这可能是一个缺点,而不是一个优点。)
  • 语法糖可能还有其他我没有想到的优点。

关于lua - Lua为什么要这样调整结果呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46778583/

相关文章:

Lua 套接字异步调用

lua - 在 Lua Roblox API 中,如何对跑进盒子的玩家/角色进行去抖动处理?

lua gsub %b <-- 这是如何工作的?

lua - 自定义 pandoc writer 中的 PandocLuaError "all choices failed"

lua - Neovim lua 复制粘贴按键映射

c++ - 与 QtScript 相比,带有 Qt 的 Lua 有多容易?

c++ - 使用 Xcode 嵌入 Lua

for-loop - Lua - 为什么不动态计算for循环限制?

lua - 在改变大小后自动改变对象的物理特性

loops - 如何在lua中迭代表中的元素对