Lua表达式和控制结构学习笔记
算术操作符
Lua的算术操作符有:
"+"(加法):
print(1+2)
"-"(减法):
print(2-1)
"*"(乘法):
print(1*2)
"/"(除法):
print(1/2)
"^"(指数):
print(27^(-1/3))
"%"(取模):
print(5%3)
关系操作符
Lua提供以下关系操作符:
<><=>===~=
以上操作符返回的运算结果都是true或false。字符串跟数字不可以进行比较
逻辑操作符
逻辑操作符有and、or、not
print(1and2) print(niland1) print(falseand2) print(1or2) print(falseor5)
逻辑操作符将false和nil视为假,其它的为真。
局部变量与作用域
Lua通过local语句来创建局部变量,局部变量的作用域仅限于声明它们的那个块。
locala,b=1,10 ifa<bthen print(a) locala print(a) end print(a,b)
用局部变量local保存全局变量,可以加速在当前作用域中对全局变量的访问。对于加速的效果,对比下面计算斐波那契数列(Fibonacci)的执行时间便知:
functionfibonacci(n) ifn<2then returnn end returnfibonacci(n-2)+fibonacci(n-1) end io.write(fibonacci(50),"\n")
使用局部变量local
localfunctionfibonacci(n) ifn<2then returnn end returnfibonacci(n-2)+fibonacci(n-1) end io.write(fibonacci(50),"\n")
控制结构
ifthenelseifelseend
ifnum==1then print(1) elseifnum==2then print(2) else print("other") end
Lua不支持switch语句
while
先判断while条件,如果条件为真,继执行循环体,否则结束
locali=1 whilea[i]do print(a[i]) i=i+1 end
repeat-until
先执行一次循环体,再判断条件,如果条件为真则退出循环体,否则继续执行循环体。类似其它语言的do-while语句,循环体至少会执行一次
locala=1 repeat a=a+1 b=a print(b) untilb<10
for循环
for循环语句有两种形式:数字型for(numericfor)、泛型for(genericfor)
数字型for语法:
forstart,end,stepdo doingsomething end
start是开始值,end是结束值,step是步长(可选,默认为1)
fora=10,0,-2do print(a) end
泛型for循环通过一个迭代器(iterator)函数来遍历所有值:
tab={key1="val1",key2="val2","val3"} fork,vinpairs(tab)do ifk=="key2"then break end print(k.."-"..v) end
break和return语句用于跳出当前执行的块。