我阅读到 Lua 中有两种不同的语法可以声明函数:
function pr()
print("I'm function pr()")
end
printt = function()
print("I'm function printt()")
end
pr()
printt()
虽然这些函数在调用时似乎完全相同,但我想知道它们在更低层次的实现上是否有区别。解释器是否完全相同处理它们还是在速度、实现或其他方面存在差异?
这两者没有实际区别。第一个只是第二个形式的语法糖。
参考手册函数定义:
The syntax for function definition is
functiondef ::= function funcbody funcbody ::= ‘(’ [parlist] ‘)’ block end
The following syntactic sugar simplifies function definitions:
stat ::= function funcname funcbody stat ::= local function Name funcbody funcname ::= Name {‘.’ Name} [‘:’ Name]
The statement
function f () body end
translates to
f = function () body end
luac -l
的输出可能会有所帮助。 - lhf