lua:返回局部变量和返回全局变量之间有什么区别吗?

function test1(x) local x=x return x end
function test2(x) return x end

假设我像这样调用它们:test(5),在返回值方面,这两个函数背后的差异是什么?代码块中x的任何使用都遵循local的规则,我理解到了这一点。但是当我返回x时,发生了什么?主要是这两个函数的返回值不同还是相同的?运行时,其中一个函数是否比另一个函数处理得更有效?

我理解的是,返回值将x作为本地值输出到调用它的任何地方。

function test3()
 test1(5) --local 5
        a=test1(5) --全局a=5
end

当使用test2(5)而不是test1(5)时,是否存在任何差异?test1将x转换为本地变量,然后返回它,而test2只是获取我将其设置为本地的本地x并返回它吗?这里有任何小细节吗?

我主要关注使用local作为优化形式。例如,对于优化碰撞公式,我是否应该在返回对它们执行的任何数学运算之前将每个参数定义为local。

function mult(x,y)
  local x=x
  local y=y
  return x*y
end

function mult2(x,y) return x*y end

原文链接 https://stackoverflow.com/questions/69138625

点赞
stackoverflow用户1442917
stackoverflow用户1442917

这并没有帮助,因为将参数值存储在局部变量中并不能最优化它们。有时你会看到一些优化来存储表格字段(避免其关联的表格访问步骤),但这不是在这种情况下进行的。

如果你有兴趣分配返回值,那么将其分配到局部变量中会快一些,但我怀疑这是一种过早优化,因为除非你在一个每秒中循环执行大量分配的操作中使用它(即使在这种情况下,你仍需要首先分析应用程序以确认这是导致问题的原因)。

2021-09-11 02:04:08