Lua中函数
1,lua中函数属于“第一类值”(与其他传统类型值具有相同的权利),函数可以存贮到变量或table中,可以作实参和其他函数返回值
2,函数与其他值一样都是匿名的,它们都没有名称,所谓的函数名实际上是一个持有某函数的变量
function foo (x) return 2*x end
是这种方式的简写
foo = function (x) return 2*x end
3,closure(闭合函数)
function newCounter()
local i = 0
return function()
i = i+1
return i
end
end
c1 = newCounter()
c2 = newCounter()
print(c1())-->1 一个闭包(一个函数加上该函数所需访问的所有“非局部的变量”)
print(c1())-->2
pirnt(c2())-->1 一个新的闭包
4,非全局的函数
注意:local fact= function(n)
if n == 0 then return 1
else return n*fact(n-1) --错误
end
end
此时 函数尚未完成,语句中fact是全局的,解决方案:先声明局部变量 local fact