本文共 1388 字,大约阅读时间需要 4 分钟。
01:在 Lua 中,函数是被看作是"第一类值(First-Class Value)",函数可以存在变量里:
函数是一种数据类型function sum(n)if n==1 then return 1 else return n*sum(n-1) endenda=sum(5)b=aprint(a)print(b)
函数做为数据类型传递
02:function 可以以匿名函数(anonymous function)的方式通过参数传递
function sum(table1,test)for k,v in pairs(table1) dotest(k,v)endendtable2={4,58,86,68,5}function test2(k,v)print(k..":"..v)endsum(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)doifval>mthen mi=i m=valendendreturnm,miendprint(maximum({8,10,23,12,5}))23 3
Lua 函数可以接受可变数目的参数,和 C 语言类似,在函数参数列表中使用三点 …表示函数有可变的参数。
function add(...)s=0for k,v in pairs{...} dos=s+vend return s end sun=add(100,500,400)print(sun)1000
我们可以将可变参数赋值给一个变量
function add(...)result=0local table1 ={...}for k,v in pairs(table1) doresult=result+vendprint("平均值无为:",result/#table1)print("长度为:",#table1)endadd(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("#",...)endprint("平均值为",average(10,5,3,4,5,6))总共传入 6 个数平均值为5.5
a=select("#",25,888,8)print(a)3
转载地址:http://knrxo.baihongyu.com/