Sat*_*hJM 3 iteration lua for-loop
好的,这是一个基本的循环
local a = {"first","second","third","fourth"}
for i=1,#a do
print(i.."th iteration")
a = {"first"}
end
Run Code Online (Sandbox Code Playgroud)
就像现在一样,循环执行所有4次迭代.
不应该计算for-loop-limit吗?如果它是动态计算的,#a在第一次迭代结束时将为1,for循环将中断....
肯定会更有意义吗?或者有什么特别的理由说明为什么不是这样的?
数值for
循环限制仅计算一次的主要原因当然是性能.
使用当前行为,您可以在for
循环限制中放置任意复杂表达式,而不会影响性能,包括函数调用.例如:
local prod = 1
for i = computeStartLoop(), computeEndLoop(), computeStep() do
prod = prod * i
end
Run Code Online (Sandbox Code Playgroud)
如果computeEndLoop
并且computeStep
需要在每次迭代时调用,上面的代码将非常慢.
如果标准Lua解释器和最着名的LuaJIT与其他脚本语言相比如此之快,那是因为许多Lua功能在设计时考虑了性能.
在极少数情况下,单个评估行为是不合需要的,for
使用while end
或更容易用通用循环替换循环repeat until
.
local prod = 1
local i = computeStartLoop()
while i <= computeEndLoop() do
prod = prod * i
i = i + computeStep()
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
510 次 |
最近记录: |