1.局部变量

局部变量的声明关键字:local.

局部变量的作用域是声明块,指的是函数体,或者是一个chunk。

例子:

local a,b=1,10
if a<b thenprint(a)local aprint(a)
end
print(a,b)

可以用do..end语言来控制局部变量的作用域,例如求解二元一次方程二元一次:

a,b,c=1,4,1
dolocal a2=2*alocal delta=(b^2-4*a*c)^(1/2)x1=(-b+delta)/a2x2=(-b-delta)/a2
end
print(x1,x2)

a2和delta都声明为局部变量,在chunk运行结束之后思动销毁。

在Lua中应当尽可能地去使用local声明,因为:

1)可以不影响全局成员的情况下重复使用变量名;

2)使用局部变量会更快一些;

3)当局部变量的chunk代码执行完毕,局部变量就会自动释放被占用的内存。

还有一个常用的用法就是:

local foo=foo

这样做的用处是:保护全局变量不被修改;快速访问。

2.流程控制

首先要注意一点:除nil和false之外的所有值在判断中都为真,包括0和空字符。

lua中的流程控制主要包括if,while,repeat,各举一例。

if,简单的计算器

print("Input a Formula with two number:")
s=io.read()
a=string.sub(s,1,1)
b=string.sub(s,3,3)
op=string.sub(s,2,2)if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a*b
elseif op == "/" then
r = a/b
else
error("invalid operation")
end
print(s.."="..r)

while,遍历数组求最大值

a={3213,132,25}
local i=1
max=a[1]
repeatprint(a[i])if max<a[i] then max=a[i] endi=i+1until a[i]==nil
print("max:"..max)

repeat,改写上面的吧(感觉就是c中的do...while,先执行再判断)

a={1,23,4,45,64,2,132,25}
local i=2
max=a[1]
while a[i] doprint(a[i])if max<a[i] then max=a[i] endi=i+1
end
print("max:"..max)

3.两种for循环

lua中的阿for循环有两中,numeric for 和generic for

numeric for的基本形式是:

for var=exp1,exp2,exp3 do<something>
end

exp1是起点,exp2是终点,exp3是步长,可以不写,默认的话为1。

要注意两点:1)三个表达式都只计算一次;2)循环控制变量是局部变量,循环结束之后自动销毁;3)不要试图在循环中改变循环控制变量,结果是不可预测的;4)跳出for循环用break。

generic for是通过迭代器的方式遍历所有元素,例如打印数组:

days = {"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"}
for k,v in pairs(days) do print(k..":"..v) end

下面是一个插入排序的例子:

a={2,321,23123,32,11}
--for i=1,5 do
--  a[i]=io.read()
--end
for i=1,5 dok=ifor j=i+1,5 doif a[k]>a[j] thenk=jendendtmp=a[i]a[i]=a[k]a[k]=tmp
end
print("After Sort:");
for i=1,#a doprint(a[i])
end


4.break和return

break语句用来退出当前循环(for、repeat、while)。在循环外部不可以使用。
return用来从函数返回结果,当一个函数自然结束时,结尾会有一个默认的return。
Lua语法要求break和return只能出现在block的结尾一句(也就是说:作为chunk的最后一句,或者在end之前,或者else前,或者until前)

每日一Lua(2)-语句相关推荐

  1. lua 循环语句 实例

    1 for 循环 --Lua中 for循环的条件要写在括号里 -- for i=v1, v2, v3 do ---v1 初始值 v2 结束值 v3 步长 -- ..... -- endfor i=1, ...

  2. 雷林鹏分享:Lua break 语句

    Lua 编程语言 break 语句插入在循环体中,用于退出当前循环或语句,并开始脚本执行紧接着的语句. 如果你使用循环嵌套,break语句将停止最内层循环的执行,并开始执行的外层的循环语句. 语法 L ...

  3. 【转贴】Lua 5.0 参考手册

    作者: Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2003 Tecgraf, PUC ...

  4. Lua 中的 function、closure、upvalue

    Lua 中的 function.closure.upvalue function,local,upvalue,closure 参考: Lua基础 语句 lua学习笔记之Lua的function.clo ...

  5. Redis中的Lua脚本怎么玩

    Redis中的Lua脚本怎么玩 Lua是一门强大.快速.轻量的嵌入式脚本语言,我们日常开发中接触的最多的还是Redis为保证原子性使用Lua执行多命令的一种方法,那么现在先来熟悉Lua基本用法. Lu ...

  6. Lua学习第二课_初探lua和lua语法

    1.为什么使用Lua?     这个问题很多大牛前辈都回答过它的用处,现实游戏开发情况也可以证明它的广泛使用.<Lua 为什么在游戏编程领域被广泛运用>,开源社区<为什么我选择 Lu ...

  7. Lua 5.0 参考手册

    Lua 5.0 参考手册 作者: Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2003 ...

  8. “撸啊”不止能秒杀!| lua+redis实现高并发抢令牌

    目录 1.什么是lua 2.为什么是lua 3.抢令牌的业务场景 + 代码实现 1.什么是lua 撸啊(Lua)是一门小巧的脚本语言,它的主要特点是轻量级.可扩展.主要应用场景是:游戏开发.独立应用脚 ...

  9. Lua 入门详情讲解

    一.Lua的介绍 Lua 语音是由巴西里约热内卢天主教大学 ([Pontifical Catholic University of Rio de janeiro ) 里的一个研究小组与 1993年开发 ...

最新文章

  1. loadrunner脚本运行时设置:Run Logic设置运行次数
  2. Kubesphere V2.1.1安装后开启可拔插组件DevOps
  3. android 自动生成aidl,[Android]用AIDL生成Service
  4. python3 字符串_Python3字符串 详解
  5. 亲测!Abaqus CAE2021插件中文乱码解决方法
  6. 笔记本相机测试软件,联想笔记本人脸识别软件(Lenovo VeriFace)
  7. 锁存器怎么使用c语言编程,读引脚、读锁存器与读-改-写指令
  8. 设置outlook开机自动启动
  9. 苹果手机Safri浏览器 js 解析问题
  10. 微型计算机的硬盘电源,17款SATA硬盘盒产品横向评测
  11. 大连IT产业解析(2人才篇)
  12. L1-054 福到了 (15分)题解
  13. 数据增强-亮度-对比度-色彩饱和度-色调-锐度 不改变图像大小
  14. Java国密加密SM2代码
  15. python 期货现货差价监测_基差,即期货与现货之间价格之差
  16. 如何无损放大图片?用这5个图片无损放大工具,图片方法也超高清
  17. spring工作机制及原理
  18. 计算机网络 华东理工大学 第2章测试
  19. excel高级筛选怎么用_excel:高级筛选技巧大全,值得收藏
  20. linux脚本嵌套循环,Linux Shell 脚本:循环语句

热门文章

  1. 魔兽世界WOW私服架设详细教程
  2. SeSe 2004年9月18日, 0:59:51
  3. DSP时钟以及QP的TICKS
  4. #今日论文推荐# 多边形战士模型,微软提出19亿参数的超大通用模型BEIT-3,刷榜多个CV和多模态任务
  5. 怎样调用星图地球数据云的开发接口?
  6. Springboot+Vue实现在线聊天室项目-修改头像、添加好友接口的实现
  7. 网站优化SEO技巧分享-企业建立自己的关键词库@运营猫工具箱
  8. 什么是Mesh网络结构?
  9. Malware Traffic Classification Using Convolutional Neural Network for Representation Learning代码复现的问题
  10. 三维动画--Blender软件介绍