关于lua数字for循环的实现
来源:互联网 发布:淘宝女装金冠店铺排名 编辑:程序博客网 时间:2024/05/20 16:09
看以下代码:
for i=1,2 do print(i) i=3end
输出是什么?如果习惯了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)的值,否则会有不可预知的结果。
- 关于lua数字for循环的实现
- 关于lua数字for循环易错点
- lua 的for循环
- Lua内容关于for循环的总结(一)
- Lua内容关于for循环的总结(二)
- lua关于for循环不能改变控制变量
- lua实现的循环背景
- lua中数值for循环的理解
- Lua的泛型for循环
- Lua for循环
- lua(1) for循环
- lua笔记 for循环
- Lua for循环
- lua for循环
- 关于For循环的学习
- 关于for循环的练习
- 关于for循环的嵌套
- 泛型lua的for循环以及lua的特殊的dowhile循环
- SQL Server 2008 R2如何开启数据库的远程连接
- EF中为表添加一些设置后如何自动关联
- NSTimer你真的会用了吗
- hdu2079-选课时间(题目已修改,注意读题)
- 漂亮,美观的图表之Matlab强势回归~~~~走你2
- 关于lua数字for循环的实现
- mysql 日期操作 增减天数、时间转换、时间戳
- c++学习笔记--指针和引用的比较
- linux下vi命令 修改文件及保存的使用方法(转)
- WCF - 序列化(DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, Binar
- jquery实现不刷新页面验证用户名是否存在
- SketchFlow Map 小型教程一
- curl 监控https 证书配置
- paip.DEVSUIT ADMIN 初次使用时出现两个LICENSE提醒