目录
Lua中函数比较简单,只是相比较c/c++来说,lua函数的返回值比较特殊,他可以返回一个或者多个值,且值的类型可不相同。
1、Lua函数的格式
--[[
Lua 函数语法格式:
function func(arg)
body
end
--]]
-- 计算table中所有number元素的和
function sum_tab(tab)
sum = 0
for i,v in ipairs(tab) do
if type(v)=="number" then
sum = sum + v;
print(i,v,sum)
end
end
return sum
end
tab = {1,3,"dd",4}
print(sum_tab(tab)) -- 8
2、Lua可变参数函数
-- 可变参函数函数
function sum(...)
local tab={...}
print("参数个数:"..select("#",...),#tab) -- 两种表述都可以计算tab中元素的个数
sum = 0
for i,v in ipairs(tab) do
sum = sum + v;
print(i,v,sum)
end
return sum
end
-- 测试
print("sum is:",sum(2,3,4,5,6,7,8,9,10))
3、多个返回值的函数
-- 例子1
-- 数值交换,并返回交换后的值
function swap(x,y)
x,y = y,x
return x,y
end
-- 测试
x,y = swap(3,2)
print("x="..x..",y="..y)
-- 例子2
-- return 多个返回值,且类型不同
function test_mutiple_rets(num,string,tab)
return num,string,tab
end
-- 测试
tab = {...}
num,string,tab = test_mutiple_rets(100,"she is a girl",{2,10,3,4})
print(num,string)
for i,v in ipairs(tab) do
print(i..":"..v)
end