在 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 循环的“计数限制”表达式是不是只计算一次,还是在每次迭代时计算?