函数的深入理解
2017-12-01 00:00:00


一、LUA函数的概念

Lua中的函数,是有词法界定的第一类值。

词法界定:嵌套的函数有权力访问其外部函数的变量。

举例:



第一类值:他们可以存储在变量中,作为参数传递给其他函数或作为结果返回。Lua中的list就不是第一类值,原因是 list 其实代表 runtime stack 上的一小段,所以无法存储到变量中。

二、闭包

一个被嵌套的函数加上该函数所需访问的所有非局部的变量及其环境。(个人理解)

我们用newcount函数来演示下。

若将local的i值变为1000,进一步说明了第一个local的作用。

若在第二个内嵌函数体内加local,情况又不一样哦,所以大家要注意局部变量的作用范围,大家可以试试。



三、闭包应用

1.重新定义函数,就类似第七章的例子

2.预定义函数,预定义一个阶乘函数

3.创建sandbox(可自行查找事例)