lua-3-条件分支语句-循环-函数

条件分支语句

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循环

语法:while 条件 do....end

num = 0
while num < 5 do
	print(num)
	num = num +1
end
***********while语句*************
0
1
2
3
4

在此再次说明,lua中没有++ -- =+ =-等自增自减、复合运算符。

repeat(do while)循环

语法:--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循环

语法 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

你可能感兴趣的:(lua基础,lua,开发语言)