函数是对语句和表达式进行抽象的主要方式,调用函数时应使用一堆圆括号把参数列表括起来,即使不需要参数,也需要一对空括号()。
Lua语言也为面向对象风格的调用(object-oriented call)提供了冒号操作符。形如 o:foo(x) 意为调用对象o的foo方法。
一个函数定义具有一个函数名( name), 一个参数表组成的列表和由一组语句组成的函数体。
function add (a)
local sum = 0
for i = 1, #a do
sum = sum + a[i]
end
return sum
end
如果调用函数时使用的参数个数与定义时的参数个数不一致, Lua语言会通过抛弃多余参数和将不足参数设为nil的方式来调整参数个数。
多返回值
Lua语言中允许一个函数返回多个结果
s, e = string.find("hello lua users", "Lua")
print(s, e) --> 7 9
Lua语言会根据函数被调用的情况调整返回值的数量。
可变长参数函数
function add (...)
local s = 0
for _, v in ipairs{...} do
s = s + v
end
return s
end
print(add(3, 4, 10, 25, 12)) -->54
参数列表中的三个点(...)表示函数参数是可变长的。
实际上可以通过变长参数来模拟Lua语言中的普通参数传递机制