lua中的条件分支语句只有if。 没有switch语句。
首先是语法:
-- if 条件 then ....内容...end
--单分支
a = 9
if a >5 then
print("123")
end
------------------
123
双分支的话需要加else
if a<5 then
print("123")
else
print("321")
end
------------------
321
多分支 则是elseif,注意:lua中elseif连着写不然会报错 条件后加then
if a<5 then
print("123")
elseif a==6 then
print("5")
elseif a==7 then
print("7")
elseif a==8 then
print("8")
elseif a==9 then
print("9")
else
print("other")
end
if a >= 3 and a <= 9 then
print("3到9之间")
end
---------------
9
3到9之间
lua中自带while repeat(do while) for循环函数
语法:while 条件 do....end
num = 0
while num < 5 do
print(num)
num = num +1
end
***********while语句*************
0
1
2
3
4
在此再次说明,lua中没有++ -- =+ =-等自增自减、复合运算符。
语法:--repeat........untile 条件(注意:是结束条件)
在C#中,当while中条件满足时,继续执行do内的语句。
int i = 2;
do
{
i++;
} while (i < 2);
lua中,当num> 5时,结束条件被满足。跳出
num = 0
--repeat........untile 条件(注意:是结束条件)
repeat
print(num)
num = num +1
until num > 5 --满足条件跳出 结束条件
***********do while语句*************
0
1
2
3
4
5
语法 for i=1,10 do
end 默认递增 i会默认+1
print("********for语句*************")
for i = 1,5 do--默认递增 i会默认+1
print(i)
end
********for语句*************
1
2
3
4
5
如果想自定义增量 直接逗号后面写
for i = 1,5,2 do--如果想自定义增量 直接逗号后面写
print(i)
end
------------------------
1
3
5
for i = 5,1,-1 do--如果想自定义增量 直接逗号后面写
print(i)
end
------------------
5
4
3
2
1
语法:function 函数名() a = function()
end end
print("***********无参数无返回值函数*************")
--在函数定义之调用前会报错
function F1( )
print("F1函数")
end
F1()
--有点类似 C#中的 委托和事件
F2 = function()
print("F2函数")
end
F2()
------------------------------------
***********无参数无返回值函数*************
F1函数
F2函数
print("***********有参数函数*************")
--参数不用指定类型
function F3(a)
print(a)
end
F3(1)
F3("123")
F3(true)
F3()
--如果传入参数与函数个数不匹配 只会补空nil 或者丢弃
F3(1,2,3)
----------------------------------------
***********有参数函数*************
1
123
true
nil
1
print("***********有返回值函数*************")
function F4( a )
return a,"123",true
end
--多返回值时,,在前面申明多个变量来接取即可
--如果变量不够 不影响 直接取对应位置的返回值,变量多了 直接赋nil
temp,temp2,temp3,temp4= F4("1")
print(temp)
print(temp2)
print(temp3)
print(temp4)
---------------------------------
***********有返回值函数*************
1
123
true
nil
函数的类型
print("***********函数的类型*************")
--函数类型就是function
F5 = function ( ... )
print("123")
end
print(type(F5))
-------------------------------------
***********函数的类型*************
function
函数的重载
print("***********函数的重载*************")
-- 函数名相同 参数类型不同 或者参数个数不同
function F6( )
print("唐老师"..str)
end
function F6(str)
print(str)
end
--函数调用的是最后声明的函数F6(str),函数不支持重载
F6()
--------------------------------------------
***********函数的重载*************
nil
变长参数
print("***********变长参数*************")
function F7( ... )
--变长参数使用 用一个表存起来 再用
arg = {...}
for i = 1 ,#arg do
print(arg[i])
end
end
F7(1,2,3,4)
F7(1,"fasd",true)
---------------------------------
***********变长参数*************
1
2
3
4
1
fasd
true
函数嵌套
print("***********函数嵌套*************")
function F8( )
F9 = function()
print(123);
end
return F9
end
f9 = F8()
f9()
function F8( )
return function()
print(213)
end
end
f9 = F8()
f9()
--闭包的考点,函数内部返回一个函数,返回的函数改变了临时变量的生命周期
function F9(x)
--改变传入参数的生命周期
return function(y)
return x+y
end
end
f10 = F9(10)
--此时的f10 为一个加函数 相当于 f10 = function(y) return 10+y.这个10是由F9传到f10的,x的生命周期本应该在F9结束而结束,现在改变了所以叫闭包
print(f10(5))
---------------------------------------------
123
213
15