当前位置: 首页 > news >正文

Lua学习---Lua的控制结构

前言

  由于之前有c/c++、javascript基础,所以学Lua的时候喜欢拿来和前面的语言比较,这里主要和C比较

1.if...else

  Lua的if语句格式:

if  条件 then
 条件成立,运行的程序块
else
 条件失败,运行的程序块
end

  Lua没有大括号来表明程序块,所以,后面要加上end来表明if语句已经结束,同样,嵌套if时,通过elseif和else  if来区分

2.while

  格式:

while  表达式 do
 --body
end

注意:Lua并没有像其他语言那样提供类似continue这样的控制语句来立即进入下一个循环。

3.repeat

  repeat类似C语言的do--while,但是repeat是先执行循环体,直到条件为真,而C语言,是知道条件为假

x  = 10
repeat
    print(x)
until  false    //死循环

4.for

  for语句有两种形式:数字for和范性for

  1)数字for

for var = begin, finish, step do
--body
end

var从begin变化到finish,每次变化都以step作为步长递增var,并执行一次执行体。step是可选的,若不指定,默认为1

for i =1,5 do
		print(i)
end
--	output:
1
2
3
4
5

  如果不想给循环设置上限的话,可以使用常量math.huge

for i=	1,math.huge	do
  if(0.3*i^3 - 20*i^2 - 500 >=0) then print(i) break   end end

  2)范型for

  泛型for通过一个迭代器(iterator)函数来遍历所有值

  Lua的基础库提供了ipairs,这是一个用于遍历数组的迭代器函数。在每次循环中,i会被赋予一个索引值,同时v被赋予一个对应于该索引的数组元素值

  

--	打印数组a的所有值
local	a = {"a", "b", "c", "d"}
for i, v in ipairs(a) do
 print("index:", i, "	value:", v)
end
--	output:
index:	1 value: a
index:	2 value: b
index:	3 value: c
index:	4 value: d

5.break,return

  break用来终止while,repeat和for三种循环的执行,并跳出当前的循环。

  return主要用于从函数中返回结果。

  

  

转载于:https://www.cnblogs.com/y-yxh/p/6250130.html

相关文章:

  • 被PQ点名了....
  • 分布式链路追踪系统预研第二篇
  • 001_SPL工作中总结
  • 精彩Blog
  • 软工期中测试简答题
  • VBScript语法错误详解
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • 最近的方向
  • 深度学习:识别图片中的电话号码(1)
  • X300等低端ATI显卡在Dapper的Gnome上使用XGL指南
  • 微信小程序正式上线 可置于聊天窗口顶部
  • 【转】iOS-APP如何做才安全
  • DataGrid行颜色随鼠标点击改变
  • Foundations of Python Network Programming - 读书笔记系列(2) - Web Services
  • flume-kafka 实例 详细
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【前端学习】-粗谈选择器
  • Fundebug计费标准解释:事件数是如何定义的?
  • input的行数自动增减
  • Java应用性能调优
  • MySQL主从复制读写分离及奇怪的问题
  • redis学习笔记(三):列表、集合、有序集合
  • Xmanager 远程桌面 CentOS 7
  • 不上全站https的网站你们就等着被恶心死吧
  • 分享一份非常强势的Android面试题
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 面试遇到的一些题
  • 三栏布局总结
  • 实现简单的正则表达式引擎
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #include<初见C语言之指针(5)>
  • (145)光线追踪距离场柔和阴影
  • (C#)一个最简单的链表类
  • (vue)页面文件上传获取:action地址
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (十一)c52学习之旅-动态数码管
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)VirtualBox安装增强功能
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • **CI中自动类加载的用法总结
  • ../depcomp: line 571: exec: g++: not found
  • .Net 高效开发之不可错过的实用工具
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET导入Excel数据
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • // an array of int
  • @reference注解_Dubbo配置参考手册之dubbo:reference