一、Lua的基本语法
1、赋值语句
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
二、局域变量和代码块
a,b = fun(3,4)
print("a="..a..",b=",b) --结果a=6,b=8
--在Lua中“local”关键字修饰的变量均为局部变量,只要不带local关键字的均为全局变量,全局变量也可以被别的文件操作。
local a = 3
print(a) --结果:3
funa()
function fun(a,b)
return a+3,b*2
end
function funa ()
print(a) --结果:a是6
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")
end
四、循环语句
while…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