lua学习笔记04
来源:互联网 发布:信捷plc流程梯图编程 编辑:程序博客网 时间:2024/05/01 06:17
基本语法:lua支持赋值语句,控制结构语句,函数调用,同时也支持多变量赋值,局部变量声明。
Lua可以对多个变量同时赋值,例如:
a,b = 10,2 * x <--> a = 10 ,b = 2 * x
遇到赋值语句lua会先计算右边所有的值,然后再执行赋值操作,所以,我们可以这样进行交换变量的值:
x,y = y ,x
a[i],a[j] = a[j],a[i]
当变量个数和值的个数不一致时,lua会一直以变量个数为基础采取以下策略:
变量个数>值的个数 按变量个数不足nil
变量个数<值的个数 多余的值会被忽略
a,b,c = 0,1print(a,b,c) -- 0 1 nila,b = a + 1,b + 1,b +2print(a,b) -- 1 2a,b,c = 0print(a,b,c) -- 0 nil nil
注意:如果要对多个变量赋值不息依次对每个变量赋值。
多值赋值经常用来交换变量,或将函数调用返回给变量。
a,b = f() -- f()返回两个值,一个赋给a,一个赋给b
局部变量与代码块:
使用local创建一个局部变量,与全局变量不同,局部变量只在被声明的那个代码块内有效。
代码块:指一个控制结构内,一个函数体,或者一个chunk(变量声明的那个文件或者文本串)
x = 10local i = 1while i < x dolocal x = i * 2 -- 2,4,6.. x是局部变量print(x)i = i + 1endprint("-----------------------")if i > 20 thenlocal x --x是局部变量x = 20print(x + 2)elseprint(x)endprint(x)--x是定义的全局变量
使用局部变量的好处:
1.避免命名冲突
2.访问局部变量的速度比全局变量更快
我们给block划定一个明确的界限:do..end内的部分。当你想更好的控制局部变量的作用范围的时候这是很有用的。
a = 1b = 200c = 3dolocal a2 = 2 * alocal d = math.sqrt(b^2 - 4 * a * c)x1 = (-b + d) / a2x2 = (-b - d) / a2endprint(x1,x2)
控制结构语句:
Lua认为false和nil为假,其他值为真。
If有三种形式:
if conditions then
then part
end ;
if conditions then
then part
else
else part
end;
if conditions then
then part
elseif conditions then
elseif part
.......-->多个elseif
else
else part
end;
While 语句
while condition do
statements;
end;
Repeat-until语句
repeat
statemnets ;
until conditions;
For循环:
第一种
for var = exp1,exp2,exp3 do
loop-part
End
For 将用exp3作为step从exp1(初始值)到exp2(终止值),执行loop-part。其中exp3可以省略,默认为1。
注意:三个表达式只会被执行一次,而且是在循环开始前。
for i = 1,50 doprint(i)endfor i = 10 ,1,-2 doprint(i)end
控制变量var是局部变量自动被声明,并且只在循环内有效。
for i = 1,10 doprint(i)endmax = iprint(max)local found = nilfor i = 1 ,10 doif(found == nil) thenfound = ielseif(i > found) thenfound = iendendendprint(found)
循环过程中不要改变控制变量的值,那样做的结果是不可预知的。如果要退出循环,使用break。
第二中,泛型for循环
for i,v in ipairs(a) do print(v) end
泛型for循环和数值for循环有两点相同:
1.控制变量是局部变量
2.不要修改控制变量的值
days = {"sunday","monday","tuesday","wednesday","thursday","friday","saturday"}revDays = {}for i ,v in ipairs(days) dorevDays[v] = iprint(i)print(revDays[v])endfor i = 1,7 dox = days[i]print(x)print(revDays[x])endprint(revDays["wednesday"])
- lua学习笔记04
- [LUA学习笔记04]Lua语法--数据类型
- Lua学习笔记(1)
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记二
- LUA 学习笔记 01
- LUA 学习笔记 02
- LUA 学习笔记 03
- lua学习笔记
- Lua学习笔记
- LUA学习笔记
- Lua 学习笔记
- lua学习笔记
- Lua学习笔记1
- lua学习笔记
- nginx 设置本地浏览器缓存文件,nginx gzip压缩
- 总结wordpress3.9版本运行缓慢的几种解决方案
- UVa 846 - Steps
- CentOS 6.5安装NodeJS
- 学习Linux的菜鸟(DNS服务器的安装与配置)
- lua学习笔记04
- using localhost.localdomain for ServerName
- OpenCV-1 我的积累和点滴
- 简单日历。
- ListView里editText数据的实时更新
- HBase概念学习(五)Java API之计数器
- 黑马程序员--网络编程(一)
- 开启apache或nginx网页gzip压缩
- IOS从网络上异步加载一系列的图片并显示在tableview上的例子