七、再论lua函数
1、lua中的函数被认为是带有词法定界和第一类值
a、词法定界:被嵌套的函数可以访问外部函数的变量
b、第一类值: lua中的函数可以放在变量中
(函数指针?)
例子:
function f(x) return 2 * x; end;
实际上函数应该定义成
f = function(x) return 2 * x; end;
第一种较好理解,写成第一种可以减少错误,该方法专业叫法称 语法糖
2、闭包
3、非全局函数
局部函数在一定范围内有效
声明方式: local
注意递归的声明方式
4、尾递归
八、迭代器和泛型for
1、迭代器包含上一次成功调用的状态和下一次成功调用的状态,闭包可以实现这种任务,闭包包含两个部分,一个是闭包自己,一个是实现闭包的工厂
2、迭代函数难写易用,一般不需要自己定义
//-----迭代器太过复杂-----------