Lua中的函数浅析
一、函数
在lua中函数的调用方式和C语言基本相同。如print(“helloworld”),z=add(x+y)。唯一的差别是,如果函数只有一个参数,并且该参数是字符串或者table构造器,那么圆括号可以省略,如print“helloworld”,f{x=10,y=10}。
我对于table构造器的理解就是它本身就是一个构造函数或者是特殊化的结构体。
lua为面向对象也提供了一个新的特殊语法--冒号操作符。表达式o.foo(o,x)的另一种写法是o:foo(x)。
functionadd(a) localsum=0 fori,vinipairs(a)do sum=sum+v end returnsum end
在以上声明中,包含了函数名(add),参数列表(a),以及函数体。需要说明的是,Lua中实参和形参的数量可以不一致,一旦出现这种情况,Lua的处理规则等同于多重赋值,即实参多于形参,多出的部分被忽略,如果相反,没有被初始化的形参的缺省值为nil。
1、多重返回值
functionmaximum(a) localpos=1 localmaxx=a[1] fori,vinipairs(a)do ifv>maxxthen pos,maxx=i,v end end returnpos,maxx end
print(maximum({1,5,2,7,3,6})) --输出47