闭包的一个重要场景,形成一个自治的环境, 让操作可以封闭运行,
即函数运行时有状态的,可以从闭包创建时候的环境独立开来。
例如下面的lua闭包, genFilter 其入参parmIn是 函数的内部变量,
当genFilter被调用时候, 产生的filter闭包,由于使用了 parmIn, 而使得parmIn成为闭包的环境存在。
跟实际入参的 dtype 分离, 其改变不影响闭包变量。
local dtype = 2; local function genFilter (parmIn) local function filter() print("parmIn="..parmIn) end return filter end local filter = genFilter (dtype); filter(); -- output 2 dtype = 3; filter(); -- output 2 local filter1 = genFilter (dtype); filter1(); -- output 3
原文:http://www.cnblogs.com/lightsong/p/3729031.html