Lua中函数可以作为全局变量也可以作为局部变量,我们已经看到一些例子:函数作为table的域(大部分Lua标准库使用这种机制来实现的比如io.read、math.sin)。
下面我们就来写一个局部函数:
Lib = {add, mul, m_add}
function Lib.add(a, b)
return a+b
end
function Lib.mul(a, b)
return a*b
end
function Lib.m_add(n)
if n==1 then
return 1
else
return n+Lib.m_add(n-1)
end
end
print(Lib.add(1, 2))
print(Lib.mul(2, 2))
print(Lib.m_add(10))
- 我们把函数声明在一个table中,那么他们的作用域就只在Lib中,通过Lib.add这样的形式调用。
- 非全局函数可以递归调用,比如m_add的例子。