Lua初识之再论函数闭包-十一
来源:互联网 发布:windows repair 3.1 编辑:程序博客网 时间:2024/04/28 17:56
Lua初识之再论函数闭包-----------------------------function newCounter(n) print("n = " .. n) return function(b) -- 匿名函数,newCounter()函数返回时调用了匿名函数 function() return b endend -- newCounter()的返回值,其实是 function()的返回值newCounter(3) -- 3 --调用newCouter(n)函数newCounter(10) -- 10 --调用newCouter(n)函数c1 = newCounter( 2) -- n = 2 --调用newCouter(n)函数c2 = newCounter( 6) -- n = 6 --调用newCouter(n)函数print( c1(5)) -- 5 --调用的其实是 function(b)print( c2(5)) -- 5 --调用的其实是 function(b)print( c1(5)) -- 5 --调用的其实是 function(b)print( c2(5)) -- 5 --调用的其实是 function(b)print( c1(5)) -- 5 --调用的其实是 function(b)print( c2(5)) -- 5 --调用的其实是 function(b)-------------------------function newCounter() local i = 0 return function() i = i + 1 return i endendc1 = newCounter()print( c1()) -- 1print( c1()) -- 2print( c1()) -- 3--匿名函数使用 upvalue i 保存他的计数,当我们调用匿名函数的时候--i 已经超出了作用范围,因为创建 i的函数 newCounter已经返回了,然而--Lua用壁报的思想正确处理了这种情况,简单的说闭包是一个函数加上它可以正确访问--的upvalues,如果我们再次调用newCounter,将创建一个新的局部变量i,因此我们得到了一个作用在心得变量i上的闭包------------------------function newCounter() local i = 0 return function() i = i + 1 return i endendc1 = newCounter()c2 = newCounter()print( c1()) -- 1print( c2()) -- 1print( c1()) -- 2print( c2()) -- 2print( c1()) -- 3print( c2()) -- 3--匿名函数使用 upvalue i 保存他的计数,当我们调用匿名函数的时候--i 已经超出了作用范围,因为创建 i的函数 newCounter已经返回了,然而--Lua用壁报的思想正确处理了这种情况,简单的说闭包是一个函数加上它可以正确访问--的upvalues,如果我们再次调用newCounter,将创建一个新的局部变量i,因此我们得到了一个作用在心得变量i上的闭包--由上可知 c1() 和 c2 调用的 i是独立的-------------------------------
0 0
- Lua初识之再论函数闭包-十一
- Lua初识之迭代器与闭包
- Lua初识之函数-十
- [Lua]函数闭包
- Lua初识之非全局函数-十二
- Lua初识之表和函数-十三
- lua之闭包
- lua之闭包
- Lua之闭包
- lua的函数初识
- Lua 函数初识(-)
- lua 函数的闭包
- Lua函数闭包解析
- Lua upvalue 函数 闭包
- Lua初识之全局变量
- Cocos2d-Lua之闭包
- Lua初识(3)_初识函数
- lua 函数初识(一)
- 上传项目到SVN分支
- Cocos2d-x 3.0 RC lua绑定教程 及 新特性介绍。
- ArrayList用法说明
- nginx配置 实现 Apache的alias 案例
- 数出1~100里9的个数
- Lua初识之再论函数闭包-十一
- LEETCODE: Subsets II
- 华为机试—“十七进制”转“十进制”
- Lua初识之非全局函数-十二
- Java的split函数切分空串和标点
- Lua初识之表和函数-十三
- ubuntu unzip 解压乱码
- C编程题解析1
- Android http 请求 Json数据缓存到内存