大佬们。请问一下为什么输出c1会递增啊。每次print不都调
lua吧
全部回复
仅看楼主
level 4
大佬们。请问一下为什么输出c1会递增啊。每次print不都调用一次newcounter,这样应该每次输出都是1啊。
2018年12月10日 09点12分 1
level 4
count不是每次都会作为局部变量被定义为0吗。然后返回0+1
2018年12月10日 09点12分 2
level 8
c1是一个函数,它带有一个变量count,你每次调用c1的时候,这个count是不会重置为0的。
这个count就是Lua中鼎鼎大名的upvalue(也叫上值或外部局部变量)。
2018年12月11日 09点12分 3
那说明调用newcounter的时候。是直接从匿名函数开始执行的吗?跳过前面的local count=0
2018年12月11日 09点12分
newCounter并不执行匿名函数,它把匿名函数当作结果返回,这个匿名函数保存到变量c1中了。
2018年12月11日 12点12分
@ks_isaf 哦懂了!谢谢[小乖]
2018年12月11日 13点12分
1