Lua的函数功能很强大,保留了C语言的一些基本的特性,但是也有C语言没有的特性,比如,lua可以在一个函数返回多个值,我们来看看下面这个案例:
解释运行: lua test5.lua
--定义一个函数,传入两个数,比较大小 --函数名为:compare_max_or_min --返回值为:第一个为max,第二个为min --当然,在function关键字前面可以加local,声明为局部函数,不加local默认为 --全局函数 function compare_max_or_min(max , min) if max < min then return min,max ; else return max,min ; end end i = 111 ; j = 200 ; max,min = compare_max_or_min(i,j) print("max:",max); print("min:",min);
运行结果:
max: 200
min: 111
Lua的函数也还可以以函数作为参数,这一点有点类似C语言的函数指针,我们来看看:test5.lua
--定义一个函数,传入两个参数,比较大小,大的返回在前,小的在后 function compare_max_or_min(max , min) if max < min then return min,max ; else return max,min ; end end --定义一个函数,传入三个参数,第一个和第二个为要比较的数,第三个是一个函数 --作为参数进行传递,这里联想起C的函数指针 function CallBackFunction(max , min , comparemax) max = comparemax(max,min) ; return max ; end --调用CallBackFunction num1 = 385; num2 = 999; num3 = -2 ; num4 = -6 ; ret = CallBackFunction(num1,num2,compare_max_or_min) ; ret1 = CallBackFunction(num3,num4,compare_max_or_min) ; print("ret:",ret); print("ret1:",ret1);
解释运行:lua test5.lua
运行结果:
ret: 999
ret1: -2
Lua也可以像C语言一样,实现可变参函数
案例:test5.lua
--可变参: ... --可以重新实现一个print的函数:Lua_Debug function Lua_Debug(str , ...) print(str,...); end --可以传入多个参数,实现累加返回 function CalAdd(...) add_ret = 0 ; local arg = {...} for i , v in ipairs(arg) do add_ret = add_ret + v ; end return add_ret ; end ret = 0 ; Lua_Debug("Hello world"); ret = CalAdd(1,2,3,4,5,6,7,8,9,10); print("ret:",ret);
解释运行: lua test5.lua
结果:
Hello world
ret: 55
时间: 2025-01-20 11:49:08