为什么在 Lua 代码块中, "return" 和 "break" 只能出现在最后一条语句?

正如 Lua 手册所述: http://www.lua.org/pil/4.4.html

我只对任何技术限制或约束感兴趣,而不是涉及口味或编码标准的答案。

对我来说,这似乎是一个奇怪的限制,因为可以非常轻松地使用语句“do return end”添加悬挂的 return

点赞
用户3677376
用户3677376

引用 Lua 的一位作者在 Lua 邮件列表中的电子邮件:

对于返回语句,这是因为否则可能会有歧义:

...
return
f(1,2,3)
...

这是没有值的返回还是对 f 的尾调用?

关于 break 语句的限制是从一个实验性的带标签的 break 语句中剩余下来的。"break f(x)" 可以理解为 "break f" 后跟着 "(x)"。

对于 Lua 5.2 及以上版本,break 的限制已被取消。

2016-01-28 15:16:55