Lua是一种弱类型语言。 赋值给变量string类型,便是string 类型。赋值number类型,便是number类型。
(1)多值赋值
a,b= 10,15,30,4 print("a="..a..",b="..b) --结果:a=10,b=15 a,b,c = 10,15 print(c) --结果:nil print("a="..a..",b="..b..",c="..c) --此时c应为nil,但这种输出方式会报错变量个数<值的个数,后面多余的值会自动忽略; 变量个数>值的个数,按变量个数补足nil;
(2)交换赋值
a,b = b,a print("a="..a..",b=",b) -结果a=15,b=10(3)函数的多返回值赋值
c,d = fun(3,4) print("a="..a..",b=",b) --结果a=6,b=8 function fun(a,b) return a+3,b*2 end在上面代码块中,我们看到会比较混乱,一般我们会把局部代码块放到 do end 之间,封装成代码块模式
a,b = 3,4 print("a="..a..",b=",b) --结果a=6,b=8 do local a = 10 print("内部a="..a) --结果a=10 end print("外部a="..a) --结果:3在Lua中分支语句只有 if else;并没有switch case.
a=3 b=5 if a>b then print(a) elseif a<b then print("a<b") else print("a=b") endwhile…end 循环 repeat…until 循环 --相当于 do…while for … end循环
--while ..do 方法是先判断在执行 a,b = 3,9 while a<b do print(a) a = a+ 1 end --repeat ..do 方法是先执行再判断,直到满足条件 --结果:3 4 5 6 7 8 repeat print(a) a = a+1 until a>b --结果:1 3 5 7 8 9 --此处的“2”代表间隔(step)为2,如果不写,此处默认为1. for i=1,10,2 do print(i) end --此种方法的结果同上。 for i=0,funb(),2 do print(i) end function funb() print("调用") return 9 end --此时,在i=3时就会跳出循环 --结果为 0 1 2 3 for i=0,funb() do print(i) if i==3 then break end end注意在Lua语言中没有continua 替代方法如下
--结果:1 2 4 5 6 7 8 for i =1 ,funb() do repeat if i == 3 then break end print(i) until true end