`
7090
  • 浏览: 278493 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)关于lua数字for循环的实现

    博客分类:
  • Lua
 
阅读更多
看以下代码:

for i=1,2 do  
  print(i)  
  i=3  
end  

输出是什么?如果习惯了C/C++语言,会觉得因为改变了控制变量i为3,所以在执行第二次循环体之前判断不通过,所以输出是1。
但结果输出是1和2,即虽然改变了i,但循环还是执行了2次。这是为什么呢?

看了lua的源代码,发现在语法分析阶段,表达式中的i(也叫控制变量)和循环体中的i并不是一个值,其实表达式中的i叫internal index,循环体中的i叫external index。

所以在循环体中并没有改变表达式中的i的值。

至于为什么lua要这样做,估计是为了安全吧,怕在循环体中不经意地改变了表达式的i,从而产生bug。

另外,在Progammming in Lua一书中也提到不要在循环体内修改控制变量(实际修改的是external index)的值,否则会有不可预知的结果。

原文:http://blog.csdn.net/yanjun_1982/article/details/8966332
分享到:
评论

相关推荐

    Lua中数字for循环实例

    首先,让我们看一个Lua数字for循环的示例代码: ```lua for i=1,2 do print(i) i=3 end ``` 这段代码乍一看会让人以为输出结果会是数字1,因为在C或C++语言中,如果在for循环体内部修改了循环计数器的值,循环条件...

    Lua中for循环语句的使用教程

    Lua中的for循环语句是程序控制结构的重要组成部分,它允许我们执行一段代码多次,通常用于迭代数组、集合或者实现特定次数的操作。对于初学者来说,理解并熟练掌握for循环是学习Lua编程的基础。 **一、for循环的三...

    Lua经典教程,附Lua环境 lua for windows

    2. 控制结构:Lua提供了if...then...else...end、while、for循环以及do...end块来控制程序流程。 3. 函数:Lua的函数是一等公民,可以作为参数传递,也可以作为返回值。函数定义使用function关键字,支持匿名函数和...

    LuaForWindows_v5.1.4-46

    1. **语法基础**:Lua具有简洁的语法,包括变量声明(全局或局部)、数据类型(如数字、字符串、布尔值、表、函数和nil)以及控制结构(如if语句、循环)。 2. **表和元表**:表是Lua的核心数据结构,可以作为数组...

    2048 源码 lua 逻辑实现

    lua的for循环和条件语句可以很好地实现这一过程。例如,当向右滑动时,我们需要将每一行内的数字按从小到大排列并合并相邻的相同数字。这个过程可以通过双指针算法来实现,同时记录下每次合并产生的新数字,以便更新...

    Lua小程序十六进制字符串和二进制数据间的转换[借鉴].pdf

    在 Lua 中,可以使用 string.len 函数来获取十六进制字符串的长度,然后使用 for 循环来遍历整个字符串,使用 string.sub 函数来截取每两个字符,使用 tonumber 函数将其转换为数字,最后使用 string.format 函数将...

    Programming in Lua Fourth edition

    2. **基础语法**:Lua的基础语法包括变量定义、数据类型(如数字、字符串、表、布尔值和nil)、控制结构(如if语句、while和for循环)、函数定义与调用。 3. **表与元表**:Lua的表是一种动态数组,可以存储任意...

    Lua程序设计(第二版)pdf 以及LuaForWindows_v5.1.5-52.exe

    在初学Lua时,首先你需要理解其基础语法,如变量声明(Lua是动态类型的)、赋值操作、条件语句(if-then-else)和循环结构(while、for)。Lua中的数据类型包括数字、字符串、布尔值、nil以及表,其中表是实现对象和...

    lua api lua文档

    - **控制结构语句**:如if语句、while循环、for循环等。 - **break和return语句**:用于提前退出循环或函数。 #### 六、函数 - **多返回值**:一个函数可以同时返回多个值。 - **可变参数**:函数可以接受任意数量...

    Lua中三种循环语句的使用讲解

    在编程语言Lua中,循环结构是实现重复执行某段代码块的重要工具。Lua提供了三种类型的循环语句:`while`循环、`for`循环以及`repeat-until`循环。每种循环都有其独特的应用场景与优势。 #### 1. `while` 循环 `...

    lua程序设计及lua中文手册

    2. 控制结构:Lua提供了if语句、while循环、for循环以及函数式编程中的do-end块来控制程序流程。 3. 函数与闭包:Lua中的函数是一等公民,可以作为参数传递、返回结果,甚至可以存储在变量中。闭包是Lua中实现函数...

    Lua 5.2 Reference Manual(Lua 5.2引用指南)

    - 循环语句如 `for` 支持数值循环和泛型循环两种形式。 **4. 函数** - 函数是 Lua 编程的核心组成部分。它们可以带参数,也可以不带参数;可以返回一个或多个值。 - 函数可以被定义为匿名函数,并可以在其他函数...

    解析Lua实现方法解析Lua实现方法

    它的for循环有两种形式:数值迭代和表迭代,适应不同的遍历需求。 4. 函数与闭包 Lua中的函数是一等公民,可以作为参数传递、返回值和在表中存储。函数可以嵌套定义,并且支持匿名函数。闭包是指有权访问自身作用域...

    lua学习资料集锦

    1. **基本语法**:Lua具有简洁的语法,支持变量声明、流程控制(如if语句、for循环、while循环)、函数定义等。它采用动态类型,变量在使用时自动确定类型。 2. **表(Table)**:Lua中的表是其核心数据结构,可以...

    Lua学习资料PDF

    3. **控制流程**:Lua支持if语句、while循环、for循环以及do...end块来组织代码。特别地,它有一个独特的for循环语法,可以遍历表的所有键值对。 4. **函数**:Lua的函数是第一类值,意味着它们可以被赋值给变量、...

    LUA全套帮助文档,里面有LUA的例子和LUA的全部资料

    学习LUA的控制结构,如条件语句(if-then-else)和循环(while, for)也是必要的。 2. **表**:LUA的表是其最强大的特性,可以用来实现数组、集合、映射、记录等。表可以作为其他表的元素,这使得LUA支持面向对象...

    lua 中文教程

    Lua的for循环有两种形式:数字索引的for循环和基于迭代器的for循环,后者常用于遍历表格。 此外,Lua还有模块系统,允许将代码组织成独立的模块,通过require函数导入。`_G`全局环境变量可以访问所有全局变量,但...

    lua教程--轻松学习lua

    控制结构如if语句、while和for循环等,与大多数编程语言相似,但更简洁。函数是第一类对象,可以作为参数传递,也可以作为返回值。表是Lua的通用数据结构,可以用来实现数组、集合、记录等多种数据结构。 接下来,...

Global site tag (gtag.js) - Google Analytics