Lua 语法之函数

函数的定义

--函数的定义
function 函数名()
end

a =function()
end

无参数无返回值函数

function  F1()
	print("F1函数")
end
-- Lua 执行 是自上往下 执行 函数不同于变量 ,
--执行函数时必须先定义且在执行函数上面有定义
F1()

--有点类似 C# 中的委托和事件 写法

F2 =function()
	print("F2函数")
end

F2()

有参数函数

function  F3( a )
	print("参数:" , a)
	-- body
end

F3 (1);

F3 ("123");

F3 (true);

-- 如果你传入从参数 和函数参数个数不匹配

--不会报错 只会补空 或者 丢弃

F3 ();

F3( 1,2,3 )

有返回值函数

function F4(a)
	-- body
	return a,"123",true
end

--多返回值时 在前面申明多个变量来接取即可
--如果变量不够 不影响 值接取对应位置的返回值
--如果变量多了 不影响 直接赋nil 空类型

temp,temp2,temp3 =F4("1")

print(temp)

print(temp2)

print(temp3)

函数的类型

函数类型 就是 function
F5=function()
   print("123")
end
print(type (F5))

函数的重载

函数名相同 参数类型不同 或者参数个数不同
Lua 中函数不支持重载 默认调用最后一个申明的函数
 function F6()
   print ("洛溪帅气")
 end

 function F6(str)
   print (str)
 end
F6()

变长参数

... 再函数里代表着 任意数量的参数
{...} 表存储数据
function F7( ... )
	arg = {...}
	for i=1,#arg do
		print(arg[i])
	end
end

F7(1,"洛溪",3,true,5,6,7);

函数嵌套

function F8()
	return function ()
		print(123);
	end
end

f9=F8()
f9()
闭包简单体现
function F9( x )
	--改变了传入参数的生命周期
	return function(y)
		return x+y;
	end
	-- body
end

F10 =F9( 20 )

print(F10(10))
posted @ 2024-07-25 21:39  BaiLuoXi  阅读(53)  评论(0)    收藏  举报