Lua 中的无限循环

为什么这个在 Lua 中不起作用?

for i = 1, 100, -1 do
  print('Infinite')
end

上面的循环不会输出任何内容。据我所知,像 C/C++ 这类传统的编程语言中,上面的代码应该是一个无限循环。 C++ 的等价代码

for (int i = 1; i <= 100; i--)
  cout << "Infinite";

我想了解一下 Lua 中的 for 循环是如何工作的。它不是和上面给出的 C++ 循环相同吗?

编辑: 我不想知道[如何在 Lua 中创建无限循环](https://stackoverflow.com/questions/4180010)。我更关心的是 Lua 中的 for 循环是如何工作的?

点赞
用户936986
用户936986

for 在 Lua 中明确定义为检查当前值是否低于限制(如果步长为负数)。由于步长 -1 是负数,且当前值 1 从一开始就低于限制 100,因此此 for 不执行任何循环。

2016-05-26 12:08:56
用户2900872
用户2900872

Lua中的for循环语法如下:

for 初始值,最大/最小值,增量 
do 
   语句 
end 

因此,下面的代码将从1打印到10:

for i=10,1,-1 
do 
   print(i) 
end 

要在Lua中生成无限循环,可能需要使用while循环:

while(true) 
do 
   print("This loop will run forever.") 
end 

欲了解更多,请访问http://www.tutorialspoint.com/lua/lua_loops.htm

2016-05-26 12:13:34
用户6336645
用户6336645

正如前面所述,for循环有三个功能,就像C/C++一样。

for i = <start>, <finish>, <increment> do

但是Lua会检测到增量不允许函数结束,并完全忽略此循环。

要创建无限循环,只需使用:

while true do

在Lua中,将变量作为参数放置而没有运算符将检查该值是否存在/为真。 如果它是false/nil,则不会运行。 在这种情况下,true始终为true,因为它是常量,因此循环永远执行。

while true do
     print('Infinite Loop')
end
2016-05-26 12:32:07