在 Lua 中,我应该在循环的每次迭代还是在循环之前定义一个变量?

Posted

技术标签:

【中文标题】在 Lua 中,我应该在循环的每次迭代还是在循环之前定义一个变量?【英文标题】:In Lua, should I define a variable every iteration of a loop or before the loop? 【发布时间】:2011-06-01 03:55:59 【问题描述】:

特别是在 Lua 中,我这样做会不会造成任何伤害:

for i = 1, 10 do
    local foo = bar()
    -- do stuff with foo
end

而不是这个:

local foo
for i = 1, 10 do
    foo = bar()
    -- do stuff with foo
end

我的意思是,Lua 会尝试为foo 每次迭代分配新内存吗?第一个块会导致执行速度变慢吗?

【问题讨论】:

其实我做了一些简单的测试,并没有什么区别 另外,查看luac -l的输出以查看VM代码。 您可能会在这个重复的问题上找到更详细的答案:Is it better to declare a local inside or outside a loop? 【参考方案1】:

寻找最安全的替代方案,即对所有变量使用最小的范围。至于效率,局部变量存储在堆栈中;循环内部没有进行内存分配。

【讨论】:

@arkilus 记得为您接受的答案投票。通过单击向上的箭头来完成。 @ponzao 我认为只有在有多个答案时才需要这样做。无论如何,已经做了,谢谢。 @arkilus 不客气! (您应该为您认为有帮助的答案投票。接受的答案是解决您问题的答案。)

以上是关于在 Lua 中,我应该在循环的每次迭代还是在循环之前定义一个变量?的主要内容,如果未能解决你的问题,请参考以下文章

for 循环的“计数限制”表达式是不是只计算一次,还是在每次迭代时计算?

我应该使用迭代器还是 for 循环来迭代?

for 循环是不是在每次迭代中重新评估其主体中的函数?

如何在C中创建连续循环,其中循环的每次迭代在其内部循环的每次迭代中发生一次

Rails:为循环的每次迭代从表中获取数据

在 foreach 循环中每次迭代后 PHP 回显