首页 > 代码库 > Lua--for循环控制结构

Lua--for循环控制结构

“参考Lua游戏开发实践指南”

  Lua提供两种控制结构(数字型和通用型)--Lua中的for语句的索引是从1开始的

  数字型:

  一个简单的示例如下

1 for indx = 1, 10 do
2     print(indx)
3 end

  do关键字标记程序块的开始,end标记程序块的结束。

  

  用户可以在第三个参数中定义“step”的值。例如:

1 for indx = 10, 1 -1 do --this counts backwards
2     print(indx)
3 end
4 for indx = 1, 100, 2 do --this counts forwards by 2s
5     print(indx)
6 end

  注意:

  1)循环次数只是在第一次执行时确定,因此,就算用户更改了参数的值也不会影响最终循环的次数。

  2)循环结构中的变量时局部变量,一旦循环结束就会被清除。如果想保存他们的值,那么必须使用全局变量或者更高级别的局部变量。

 

  通用型:

  PS: pairs()函数可以遍历table中的每一个元素。

在for循环控制结构中,pairs()函数遍历整个table(即使不知道长度),并返回索引值和每一个元素的值。

1 myNames = {"Fred", "Ethel", "Lucy", "Ricky", "Rockey", "Betsy", "Bill"}
2 for index, value in pairs(myNames) do
3   print(index, value)
4 end

 

  在for循环控制结构中用更传统的方式实现同样的功能,即使不知道table的大小:

1 for index = 1, table.getn(myNames) do
2     print(index, myNames[index])
3 end

 

  pairs()函数在遍历非数字索引的table时非常有用,示例:

1 myData =http://www.mamicode.com/ {}
2 myData.name = "Billy"
3 myData.interest = "Wind surfing"
4 myData.quote = "Cold out, eh?"
5 myData.shoesize = 11
6 for index, value in pairs(myData) do
7     print(index, value)
8 end

  (终端)运行结果:

1 interest    Wind surfing
2 shoesize    11
3 name    Billy
4 quote    Cold out, eh?