语法:
function func_name (arguments-list) statements-list end
返回多个数:
1.当作为表达式调用函数时,作为最后一个参数或者仅有的一个参数时,根据变量个数,尽可能多的返回多个值,不足的补nil,超出就丢弃。其他情况,函数返回第一个值。
function test() return 2,3,4,5 end -- 作为仅有的参数,返回多个值 x,y=test() print(x,y) -- 作为最后一个参数,返回多个值 x,y,z=10,test() print(x,y,z) -- 一般情况,函数返回一个值 x=test() print(x)
2.作为函数参数调用的时候,和多值赋值是相同的。可以用参数_占位来代替函数,就比较容易理解了。
function test() return 2,3 end -- 输出:2 3 print(test()) -- 输出:test 2 3 print("test:",test()) -- 输出:2 test print(test(),"test")3.在表构造函数中初始化的时候,也和多值赋值相同。
function test() return 2,3 end t={test()} -- 输出:2 3 print(t[1],t[2]) t={test(),"test"} -- 输出:2 test print(t[1],t[2]) t={"test",test()} -- 输出:2 3 print(t[2],t[3])
给出一个求最值的实例:
--返回表数据的最值 function mostvalue(a) local max local min for i,val in ipairs(a) do --初始化 if i==1 then max,min=val,val end --判断 if val>max then max=val elseif val <min then min=val end end return max,min end local m={7,2,3,5} print(mostvalue(m))
使用3点(...)表示函数有可变的参数,放在arg表中。arg表中,带有域n表示参数的个数。
1.全为可变参数:
-- 输入的参数数目可变 function myprint(...) for i,v in ipairs(arg) do print(i,arg[i]) end end myprint(1) myprint(1,2)2.带固定参数和可变参数:
-- 固定参数:a function myprint(a,...) print("a:",a) for i,v in ipairs(arg) do print("arg:",i,v) end end myprint(10,2) myprint(10,2,3)