【发布时间】:2017-01-03 16:30:44
【问题描述】:
在写一些one-off Lua code 的答案时,我发现自己编写了打高尔夫球的代码以在一行上放置一个函数。虽然这段代码不适合一行...
foo=function(a,b) local c=bob; some_code_using_c; return c; end
...我意识到我可以通过将其转换为:
foo=function(a,b,c) c=bob; some_code_using_c; return c; end
使用函数参数来声明函数局部变量(假设我知道第三个参数永远不会传递给函数)而不是使用local,是否会对性能或功能产生影响?这两种技术的行为是否有所不同?
注意:我在上面包含了分号,以使概念清晰,并帮助那些不知道 Lua 处理空格的人。我知道它们不是必需的;如果您点击上面的链接,您会看到实际代码没有使用它们。
编辑根据@Oka 的回答,我比较了这两个函数生成的字节码,在不同的文件中:
function foo(a,b)
local c
return function() c=a+b+c end
end
function foo(a,b,c)
-- this line intentionally blank
return function() c=a+b+c end
end
忽略地址,字节码报告是相同的(除了为函数列出的参数数量)。
【问题讨论】:
标签: lua