每日一Lua(3)-函数
发布时间:2020-12-14 22:17:39 所属栏目:大数据 来源:网络整理
导读:1.简单的例子 lua中的函数和c中的很相似,下面是数组累加的例子: nums={3,321,11,23,32}function add(a)local sum=0for k,v in ipairs(a) dosum=sum+vendreturn sumendprint(add(nums)) 2.返回多个值 lua中的函数可以有多个返回值,下面的例子就找到最大值
1.简单的例子 lua中的函数和c中的很相似,下面是数组累加的例子: nums={3,321,11,23,32} function add(a) local sum=0 for k,v in ipairs(a) do sum=sum+v end return sum end print(add(nums)) 2.返回多个值 lua中的函数可以有多个返回值,下面的例子就找到最大值和它的位置。 function maximum (a) local mi = 1 -- index of the maximum value local m = a[mi] -- maximum value for i,val in ipairs(a) do if val > m then mi = i; m = val end end return m,mi end print(maximum({8,10,12,5})) 可以利用这样的函数一次性给多个变量赋值,如果变量的个数多余函数的返回值个数,那么多余变量就赋值为nil,如果利用返回多个值的函数给某一个变量赋值的时候,只把函数返回的第一个值赋给变量。 还是接着上面的例子; a,b,c=maximum({8,5}) d=maximum({8,5}) print(a,c,d); 运行结果是这样: 当利用没有返回值的函数对变量进行赋值的时候,就将nil赋给该变量。 当函数调用出现在一个表达式中的时候,函数只返回第一个返回值。 当用函数来构造table的时候,所有返回值都会用到。 例如 e={maximum({8,5})} print(e[1],e[2]) 可以在函数调用的时候加上一对()来确保返回值只有一个。 总之,lua会根据情况调节函数的返回值。 3.接受可变参数的函数 函授接受的参数个数可以是变化的,比如说遍历数组,在c中需要传递数组的指针和数组的大小,在lua中用...就可以了。 function add (...) local s=0 for i,v in ipairs{...} do s=s+v end return s end print(add(321,32,1,34,12)) 这样就可以遍历数组求和了。 4.命名参数 有时候你并不一定知道函数参数的顺序,这时候使用命名参数就有很大作用了。 function sub(arg) return (arg.first-arg.second) end print(sub{first=12,second=2}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |