函数定义形如:
function 函数名(参数列表)
函数体
end
例如:
function add(a,b)
return a+b
end
相当于:
add = function(a,b) return a+b end
和C语言一样,Lua的函数可以接受可变参数个数,它同样是用"…"来定义的,比如:
function sum (a,b,…)
如果想取得…所代表的参数,可以在函数中访问arg局部变量(表类型)得到。
如 sum(1,2,3,4)
则,在函数中,a = 1, b = 2, arg = {3, 4}
更可贵的是,它可以同时返回多个结果,比如:
function s()
return 1,2,3,4
end
a,b,c,d = s() -- 此时,a = 1, b = 2, c = 3, d = 4
表类型可以拥有任意类型的值,包括函数!因此,有一个很强大的特性是,拥有函数的表,恰当的应该说是对象吧。Lua可以使用面向对象编程了。
例如:
t =
{
Age = 27
add = function(self, n) self.Age = self.Age+n end
}
print(t.Age) -- 27
t.add(t, 10)
print(t.Age) -- 37
t.add(t,10) 在Lua中,你可以简写成:
t:add(10) -- 相当于 t.add(t,10)