【发布时间】:2017-05-22 15:32:58
【问题描述】:
我读到我们可以用两种不同的语法在 Lua 中声明一个函数:
function pr()
print("I'm function pr()")
end
printt = function()
print("I'm function printt()")
end
pr()
printt()
虽然这些函数在被调用时似乎以完全相同的方式工作,但我想知道它们在较低级别的实现之间是否存在差异。解释器对它们的处理是完全相同的,还是在速度、实现或任何方面有所不同?
【问题讨论】:
-
如果您对生成的代码有疑问,查看
luac -l的输出可能会有所帮助。 -
如果您从另一种语言转移对术语“声明”的一些理解,您应该知道在 Lua 中您正在创建一个函数定义,它是一个表达式,在运行时评估时会创建一个函数值.您的第二种语法使这一点更加明显。在您的示例中,甚至没有“声明”变量。