说明:Lua学习笔记的内容都是《Lua程序设计.第二版》的读书笔记,笔记中很多内容都是来自于书中
1.赋值
1)赋值(assignment)的基本含义:修改一个变量或是一个table中元素的值
2)多重赋值:将多个值赋予多个可赋值对象,每个值和每个可赋值对象用逗号隔开,例如
1 | a,b = 10, 2 * x -- a的值为10 b的值为2 * x |
同时,先对=(赋值)右边的的所有元素求值,再进行赋值,用此可以很方便的交换两个变量的值
1 | x, y = y, x |
lua总是会将等号右边值的个数调整到和左边一致,如果值的个数少于变量的个数,那么多余的变量赋值为nil,如果值更多,则丢弃 ,注意:尽量保证=(赋值号)左右个数一致来避免一些隐性的错误,例:
1 2 | a, b, c = 0,1 -- a = 0, b=1, c = nil a, b = 0,1,2 -- a = 0, b=1,2被丢弃 |
2.局部变量:使用local来定义一局部变量,lua中局部变量的概念和其他语言类似,在此不再赘述,使用 do-end来强制创建一个作用域,在lua中有一种习惯写法是
1 | local foo = foo |
这个语句创建一个局部变量foo并用全局变量foo的值来初始化,这个语句可以保存foo的值,或是加快相应作用域对foo的访问
注:lua中没有用local定义的变量都是全局变量
3.控制结构
1)选择结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if a < 0 then a = 0 end if a< 0 then a = 0 else a = 1 end 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("xxx") end |
lua中没有switch语句
2)循环
①while用法 conditon为假时退出循环
1 2 3 | while <conditon> do -- do sth end |
②repeat-until(重复直到):condition为真时退出循环 condition中的表达式可以访问循环体中的局部变量
1 2 3 | repeat -- do sth until <conditon> |
③数字型for
1 2 3 | for var = exp1, exp2, exp3 do --do sth end |
var 从exp1变化到exp2以exp3为步长如果不指定exp3默认为1 exp1,exp2,exp3在循环开始时一次性求值
同时,要取出循环体内的变量必须copy到一个有更大作用域的变量中
1 2 3 4 5 6 7 8 9 10 | --在列表中查找一个值 local found = nil for i = 1, #a do if a[i] < 0 then found = i break end end print(found) |
④泛型for,例子
1 2 3 4 5 6 7 8 | --输出table a中的所有value for i,v in ipairs(a) do print(v) end --输出table a中的所有key for k in pairs(a) do print(k) end |
⑤for的特点 :循环体中的都是局部变量、决不硬挨对循环变量赋值
4.break和return只能是一个语句块后的最后一句
1 2 3 4 | funtion foo() return --语法错误 do return end -- OK end |
0 条评论。