Lua教程(四):函数详解
一、函数:
在Lua中函数的调用方式和C语言基本相同,如:print("HelloWorld")和a=add(x,y)。唯一的差别是,如果函数只有一个参数,并且该参数的类型为字符串常量或table的构造器,那么圆括号可以省略,如print"HelloWorld"和f{x=20,y=20}。
Lua为面对对象式的调用也提供了一种特殊的语法--冒号操作符。表达式o.foo(o,x)的另一种写法是o:foo(x)。冒号操作符使调用o.foo时将o隐含的作为函数的第一个参数。
Lua中函数的声明方式如下:
functionadd(a) localsum=0 fori,vinipairs(a)do sum=sum+v end returnsum end
在以上声明中,包含了函数名(add),参数列表(a),以及函数体。需要说明的是,Lua中实参和形参的数量可以不一致,一旦出现这种情况,Lua的处理规则等同于多重赋值,即实参多于形参,多出的部分被忽略,如果相反,没有被初始化的形参的缺省值为nil。
1.多重返回值:
Lua支持返回多个结果值。如:
s,e=string.find("HelloLuausers","Lua") print("Thebeginindexis"..s..",theendindexis"..e.."."); --Thebeginindexis7,theendindexis9.
以上的代码示例只是演示了如何获取Lua函数的多个返回值,下面的示例将给出如何声明返回多个值的Lua函数。如: [code] functionmaximum(a) localmi=1 localm=a[mi] fori,valinipairs(a)do ifval>mthen mi,m=i,val end end returnm,mi end print(maximum{8,10,23,12,5}) --23 3