Lua中变相实现continue跳出循环
Lua 里没有 continue 这个关键词,有时候挺不方便,可能导致循环里的 if-then 嵌套比较深。
但我们可以用一个小技巧来实现同等功能:
for i = 1, 100 do
while true do
if i % 2 == 1 then break end
-- 这里有一大堆代码
--
--
break
end
end
在这个例子中,当 i % 2 == 1 时,就会实现 continue 的效果。
这种写法的好处是在循环体较为复杂时,可以很清晰的看到什么时候直接跳到循环尾部了。
相关推荐
-
Lua中的for循环和迭代器的秘密探究
上一篇我们介绍了,可以使用for循环来完成迭代器的调用,十分简洁. 那么,具体这for循环做了什么呢?我当然没有去看源码,我只是看书而已. 资料来源于<Lua程序设计>第二版,如果这本书的内容没有错的话,那么,本篇文章理论上也不会有错~ 1.返回两个值的迭代器 pairs是能遍历table的key和value的,而我们之前写的dieDaiQi函数只能返回value. 所以,我们要改改dieDaiQi函数,如下: 复制代码 代码如下: function dieDaiQi(t) local
-
Lua中的repeat...until循环语句使用教程
与for和while循环不同,在循环的顶部测试循环条件,Lua编程语言的repeat...until 循环检查循环底部的状态. repeat...until 循环类似于while循环,不同的是do ... while循环是保证至少执行一次. 语法 Lua编程语言repeat...until循环的语法是: 复制代码 代码如下: repeat statement(s) until( condition ) 注意的是,条件表达式出现在循环结束,所以在循环语句(S)执行一次之前的条件进行测试. 如
-
Lua中数字for循环实例
看以下代码: 复制代码 代码如下: 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. 所
-
Lua中变相实现continue跳出循环
Lua 里没有 continue 这个关键词,有时候挺不方便,可能导致循环里的 if-then 嵌套比较深. 但我们可以用一个小技巧来实现同等功能: 复制代码 代码如下: for i = 1, 100 do while true do if i % 2 == 1 then break end -- 这里有一大堆代码 -- -- break end end 在这个例子中,当 i % 2 == 1 时,就会实现 cont
-
浅析JavaScript中break、continue和return的区别
break function myBreak() { for(var i = 0; i < 5; i++) { if(i == 3) { break; } console.log(i); } } myBreak(); 输出: 0 1 2 break: 直接跳出 当前 的循环,从当前循环外面开始执行,忽略循环体中任何其他语句和循环条件测试.它只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出. continue function myContinue()
-
python中break、continue 、exit() 、pass终止循环的区别详解
python中break.continue .exit() .pass区分 1.break:跳出循环,不再执行 Python break语句,就像在C语言中,打破了最小封闭for或while循环. break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句. break语句用在while和for循环中. 如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码. 例1: break跳出while死循环 ```python wh
-
JavaScript中break、continue和return的用法区别实例分析
本文实例讲述了JavaScript中break.continue和return的用法区别.分享给大家供大家参考,具体如下: break 停止了这个for循环,跳出循环来继续执行fn函数里之后的语句 function fn() { for(var i = 0; i < 5; i++) { if(i == 3) { break; } console.log(i); } console.log("ha") } fn();//0 1 2 ha continue 只是停止了当前循环,继续
-
Lua中基本的数据类型、表达式与流程控制语句讲解
1. Lua类型 1.1 基本类型 Lua是一种动态类型语言,没有类型定义的语法.Lua一共有8种基础类型:nil(空).boolean(布尔).number(数字).string(字符串).userdata(自定义类型).function(函数).thread(线程).table(表). 函数type可根据一个值返回其类型名称(字符串),如print(type(print)),输出"function":print(type(type(X))) ,输出"string"
-
解析Lua中的全局环境、包、模块组织结构
模块就是一个程序库,而包是一系列模块.Lua中可以通过require来加载模块,然后得到一个全局变量表示一个table.Lua将其所有的全局变量保存在一个被称为"环境"的常规table中.本文首先介绍环境的一些实用技术,然后介绍如何引用模块及编写模块的基本方法. 1. 环境 Lua将环境table保存在一个全局变量_G中,可以对其访问和设置.有时我们想操作一个全局变量,而它的名称却存储在另一个变量中,或者需要通过运行时的计算才能得到,可以通过value = _G[varname]来获得
-
深入解读Lua中迭代器与泛型for的使用
泛型for原理 迭代器是一种可以遍历集合中所有元素的机制,在Lua中通常将迭代器表示为函数,每调用一次函数,就返回集合中"下一个"元素.每个迭代器都需要在每次成功调用之间保持一些状态,这样才能知道它所在的位置及如何步进到下一个位置,closure就可以完成此项工作.下面的示例是列表的一个简单的迭代器: function values(t) local i = 0 return function() i = i + 1; return t[i] end end 循环调用: t = {10
-
Lua中函数与面向对象编程的基础知识整理
函数 1. 基础知识 调用函数都需要写圆括号,即使没有参数,但有一种特殊例外:函数若只有一个参数且参数是字面字符串或table构造式,则圆括号可有可无,如dofile 'a.lua',f{x=10, y=20}. Lua为面向对象式的调用提供冒号操作符的特殊语法,如o.foo(o, x)等价于o:foo(x).和Javascript类似,调用函数时提供的实参数量可以与形参数量不同,若实参多了则舍弃,不足则多余的形参初始化为nil. 1.1 多重返回值 Lua允许函数返回多个结果,函数返回如ret
-
Lua中的变量类型与语句学习总结
1. Lua类型 1.1 基本类型 Lua是一种动态类型语言,没有类型定义的语法.Lua一共有8种基础类型:nil(空).boolean(布尔).number(数字).string(字符串).userdata(自定义类型).function(函数).thread(线程).table(表). 函数type可根据一个值返回其类型名称(字符串),如print(type(print)),输出"function":print(type(type(X))) ,输出"string"
-
Lua中调用C++函数示例
Lua当然也能够调用C中定义的函数.一个平均数的例子,解释一下. 下面给出的C++函数average()演示了如何接受多个参数且返回超过一个值. 1.lua_gettop函数返回栈顶的索引值.因为在Lua中栈是从1开始编号的,因此该函数获得的值就是参数的个数. 2.在for循环中计算所有参数之和. 3.调用lua_pushnumber()将参数的平均值压栈. 4.最后,函数返回1,说明有一个返回值在栈中. 现在C++函数已经被定义好了,我们必须将它告诉Lua解释器.这将在main函数中初
随机推荐
- JavaScript 学习笔记一些小技巧
- JavaScript-世界上误解最深的语言分析
- 使用js正则控制input标签只允许输入的值
- 谈一谈bootstrap响应式布局
- JavaScript使用atan2来绘制箭头和曲线的实例
- Android下拉列表(Spinner)效果(使用C#和Java分别实现)
- php顺序查找和二分查找示例
- python批量修改文件后缀示例代码分享
- Android编程实现长按弹出选项框View进行操作的方法
- Android实现Activity水平和垂直滚动条的方法
- javascript 包裹节点 提高效率
- asp中提示至少一个参数没有被指定值 解决方法
- VBS破坏性应用代码
- 批处理利用HOSTS文件(屏蔽,加速)网站的代码
- PL/SQL DEVELOPER 使用的一些技巧
- jQuery链式调用与show知识浅析
- JSONP获取Twitter和Facebook文章数的具体步骤
- 用js实现的检测浏览器和系统的函数
- Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
- JavaScript必知必会(九)function 说起 闭包问题