Lua语言学习四(函数操作)

print("************函数操作*****************")

--[[
--function 函数名
end
]]


--[[
a=function()
end
]]

print("************无参数无返回值*****************")
function F1()
	print("函数1");
end

F1();

F2=function (  )
	-- body
	print("函数2");
end
F2();

print("************有参数*****************")
function F3( a )
	-- body
	print(a)
end

F3(1);
F3("123");
F3();

function F4( a,b,c,d)
	-- body
	print(a..b..c..d);
end

F4("a","b","c","d");



print("************有返回值*****************")

function F5( a )
	-- body
	return a,"123",17895;
end
temp,temp2=F5("a");
print(temp..temp2)
print( F5("a"));

print("************函数的类型*****************")

F6=function ( )
print("123");
end
F6();

print(type(F6));
print("************函数重载*****************")
--不支持重载

print("************变长函数*****************")
--变长函数需要用一个表存起来,在使用
function F7( ... )
	arg={...}
	for  i=1,#arg do
		print(arg[i])
	end
end
F7(1,2,3,4,5,6,7,8);


print("************函数嵌套*****************")
function F8()
	return function ( ... )
		print("123456");
	end
end
F9= F8();
print(F9())

--闭包
function F10( x )
	return x,function ( y )
		-- body
		return x+y;
	end
end

x,F11=F10(110);
print(x);
num= F11(10);
print(num);
	

闭包:在函数内部返回一个函数,并改变了这个函数内部临时变量生命周期(通过调用含有一个内部函数加上该外部函数持有的外部局部变量(upvalue)的外部函数(就是工厂)产生的一个实例函数)
代码解释:在上述代码F10的方法中,传入的x的值是一个临时变量,本来是F10在执行完毕以后就没用了,但是在内部中又一次使用,在F11中继续使用,改变了x参数的生命周期,形成了闭包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值