For loop 对于不同类型的循环

For loop 对于不同类型的循环,for-loop,lua,For Loop,Lua,我想了解更多关于for循环的知识,据我所知有不同的类型 比如说, for i = 1, 5 do print("hello") end ^我知道这一个,它将打印hello 5次,但下面还有其他类似的,我不理解,特别是索引位(这是否意味着它是数字1?),以及IPAIR的作用是什么 for index, 5 in ipairs(x) do print("hello") end 如果有其他类型的,请告诉我,我想学习所有类型,如果您能提供任何进一步的阅读,我将非常乐意查看它们是的,它

我想了解更多关于for循环的知识,据我所知有不同的类型

比如说,

for i = 1, 5 do
    print("hello")
end
^我知道这一个,它将打印hello 5次,但下面还有其他类似的,我不理解,特别是索引位(这是否意味着它是数字1?),以及IPAIR的作用是什么

for index, 5 in ipairs(x) do
    print("hello")
end

如果有其他类型的,请告诉我,我想学习所有类型,如果您能提供任何进一步的阅读,我将非常乐意查看它们

是的,它将打印hello 5次

根据上面的回答

ipairs
的功能与
配对
完全相同,但有点扭曲

ipairs
遍历该表,直到它找到一个
nil
值,或者一个不存在的值(如果有意义的话)。所以,如果你运行我为你展示的配对脚本,但只是用iPair替换配对,它会做完全相同的事情


正如您可以在Lua参考手册中看到的那样

for语句有两种形式:一种是数值形式,另一种是泛型形式

数值for循环在控件运行时重复一个代码块 变量通过算术级数运行。它有以下几点 语法:

stat::=对于名称“=”exp“,”exp[”,“exp]do block end

例如:

for i = 1, 3 do
  print(i)
end
local myTable = {"a", "b", "c"}
for i, v in ipairs(myTable) do
  print(i, v)
end
将输出

1    
2    
3
你似乎对那个很熟悉。有关更多详细信息,请阅读参考手册一节

泛型for语句在称为迭代器的函数上工作。在…上 每次迭代,都会调用迭代器函数来生成新的 值,此新值为零时停止。泛型for循环具有 以下语法:

stat::=对于explist do block end namelist中的namelist::=Name{,' 名称}

例如:

for i = 1, 3 do
  print(i)
end
local myTable = {"a", "b", "c"}
for i, v in ipairs(myTable) do
  print(i, v)
end
将输出

1  a
2  b
3  c
ipairs是上述迭代器函数之一:

返回三个值(迭代器函数、表t和0),因此 那建筑

ipairs(t)do body end中i,v的
将迭代键-值对
(1,t[1]),(2,t[2]),…,
直到第一个
nil

在此处阅读有关iPair和pairs的更多信息:

当然,您可以实现自己的迭代器函数

确保你也阅读了:


所有这些您都可以在几乎所有值得尊敬的Lua学习资源中找到。对于
变体,只有2个
,而且你的问题中也有这两个。可能重复引用的地方是哪里?你应该引用你的消息来源。