Skip to content

Latest commit

 

History

History
49 lines (43 loc) · 3.09 KB

0X2B循环for.md

File metadata and controls

49 lines (43 loc) · 3.09 KB

0X2B 循环for

前置知识

  • 0X29 再谈循环

正文

  1. Lua除了while和repeat语句还提供了一种for循环语句.
  2. while和repeat语句循环终止条件可以是任何逻辑表达式.其中有一些写法比较常用,而且格式化.为了方便使用,就约定了一种新的循环语句,用于简写这些写法.这种新的循环语句叫做for语句.
  3. Lua中的for语句有两种写法,一种是计数变量的写法,一种是迭代遍历的写法.其中的第二种将在后续章节中介绍.本节只介绍第一种写法.
  4. 如果我们希望一段代码执行一个给定的次数n次后就停止.就需要用到循环变量.每次执行循环时都把循环变量加1,判定是否继续进行循环的条件就是计数变量是否小于等于给定的数值n.用while语句写的,循环变量控制的循环语句如下.它会输出20行.
    n=20
    i=1
    while i<=n do
       print('number:',i)
       i=i+1
    end
    其中的i就是循环变量.在循环前赋予i的值是循环变量初始值,每次循环中给i增加的量称为增量.n为循环次数(i的界限,或者说最大值).
  5. while语句版的计数循环比较繁琐.for语言版就要简明得多.它把计数变量的初始化(赋予初始值),增量,最大值合并到一起写.循环体剩余部分和while语句的基本一样.关键词while要换成for.如下所示
    n=20
    for i=1,n,1 do
       print('number:',i)
    end
    for后边的带有等号的表达式并不表示批量赋值.这是循环语句中,赋值表达式的特殊用法.第一个1表示循环计数变量i的初始值是i,第二个数20和(这里用变量n赋值)表示i的界限,第三个数1是每次循环的增量.循环计数变量在for语句中会自动初始化,自增,检测是否到达界限.
  6. for语句中的计数变量初始值和上限可以随意调整.但是如果初始值大于上限,就一次循环体都不会执行.
  7. for语句中,每次循环的步长是可以省略的.如果省略步长则默认步长(增量)为1.例如:
    for k=1,10 do print('hello') end
    步长也可以不是1,比如这个语句会输出10以内的奇数.
    for j=1,10,2 do print('hello') end
    步长甚至可以不是整数.
    for i=1,10,0.1 do print(i) end
  8. 如果你已经了解过局部变量相关的内容,这里应当注意,for循环中的循环变量i是一个局部变量.它的作用域仅仅限于for语句内.
  9. 另外对于所有的流程控制中的复合句(do-end,if,while,repeat,for).如果在这些语句中的代码块中声明local,所创建的局部变量的作用域仅仅限于这个语句内.这对应于函数定义语句中声明的局部变量的作用域仅仅在函数内.
  10. 最后补充一个之前一直没有介绍到的用法.return语句可以用于任何流程控制语句中.如果执行到return语句,则流程控制复合句的执行立即终止并且返回值.在交互式编程环境中可以看到这个由流程控制语句(而非函数)返回的值.

后续推荐

  • 0X2C 表的遍历