05:function函数的用法

it2022-05-05  121

01:在 Lua 中,函数是被看作是"第一类值(First-Class Value)",函数可以存在变量里: 函数是一种数据类型

function sum(n) if n==1 then return 1 else return n*sum(n-1) end end a=sum(5) b=a print(a) print(b)

函数做为数据类型传递

02:function 可以以匿名函数(anonymous function)的方式通过参数传递

function sum(table1,test) for k,v in pairs(table1) do test(k,v) end end table2={4,58,86,68,5} function test2(k,v) print(k..":"..v) end sum(table2,test2) --匿名函数 sum(table2, function (k,v) print(k..""..v) end)

Lua函数可以返回多个结果值,比如string.find,其返回匹配串"开始和结束的下标"(如果不存在匹配串返回nil)

a,b=string.find("www.runoob.com", "runoob") print(a,b) 5 10

在return后列出要返回的值的列表即可返回多值

functionmaximum(a) localmi=1-- 最大值索引 localm=a[mi]-- 最大值 fori,valinipairs(a)do ifval>mthen mi=i m=val end end returnm,mi end print(maximum({8,10,23,12,5})) 23 3

Lua 函数可以接受可变数目的参数,和 C 语言类似,在函数参数列表中使用三点 …表示函数有可变的参数。

function add(...) s=0 for k,v in pairs{...} do s=s+v end return s end sun=add(100,500,400) print(sun) 1000

我们可以将可变参数赋值给一个变量

function add(...) result=0 local table1 ={...} for k,v in pairs(table1) do result=result+v end print("平均值无为:",result/#table1) print("长度为:",#table1) end add(4,5,8,9) 平均值无为:6.5 长度为:4

我们也可以通过 select("#",…) 来获取可变参数的数量

function average(...) result = 0 local arg={...} for i,v in ipairs(arg) do result = result + v end print("总共传入 " .. select("#",...) .. " 个数") return result/select("#",...) end print("平均值为",average(10,5,3,4,5,6)) 总共传入 6 个数 平均值为5.5 a=select("#",25,888,8) print(a) 3

最新回复(0)