函数
函数的作用
函数有2种用途:完成指定的任务,作为调用语句使用;计算并返回值,作为赋值语句的表达式使用。
function func_name(arguments_list)
statements-list;
end
函数调用的时候,需要“()”表明是函数调用,当只有一个参数并且这个参数是字符串或者表构造的时候,()这个是可选的。
print("Hello Lua") --> print "Hello Lua"
dofile(‘a.lua’) --> dofile 'a.lua'
f {x= 10, y = 20 } --> f({x= 10, y = 20 } )
lua也提供了面向对象的调用方法,比如o:foo(x)与o.foo(o,x)是等价的,Lua 函数实参和形参的匹配与赋值语句类似,多余部分被忽略,缺少部分用 nil 补足。
f(a, b) return a or b end
CALL PARAMETERS
f(3) a=3, b=nil
f(3, 4) a=3, b=4
f(3, 4, 5) a=3, b=4 (5 is discarded)
返回多个值
Lua函数可以返回多个值,按照接收顺序匹配。
如果一个return语句使用圆括号将返回值括起来也将导致返回一个值。
可变参数
Lua函数可以接受可变数目的参数,在参数列表中使用"…"表示可变参数。Lua将函数的参数放在一个叫arg的表中,除了参数以外arg表中还有一个域n表示参数的个数。
Lua中的函数是带有词法定界的第一类值
第一类值指:在Lua中函数和其他值(数值、字符串)一样,函数可以被存放在变量中,也可以存放在表中,可以作为函数参数也可以作为返回值。
词法定界指:被嵌套的函数可以访问他外部的函数中的变量。这一特性给Lua提供了强大的编程能力。