每日一Lua(3)-函数

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,23,12,5}))



可以利用这样的函数一次性给多个变量赋值,如果变量的个数多余函数的返回值个数,那么多余变量就赋值为nil,如果利用返回多个值的函数给某一个变量赋值的时候,只把函数返回的第一个值赋给变量。

还是接着上面的例子;

a,b,c=maximum({8,10,23,12,5})
d=maximum({8,10,23,12,5})
print(a,b,c,d);

运行结果是这样:


当利用没有返回值的函数对变量进行赋值的时候,就将nil赋给该变量。

当函数调用出现在一个表达式中的时候,函数只返回第一个返回值。

当用函数来构造table的时候,所有返回值都会用到。

例如

e={maximum({8,10,23,12,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})


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值