大佬们。请问一下为什么输出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
ks_isaf
c1是一个函数,它带有一个变量count,你每次调用c1的时候,这个count是不会重置为0的。
这个count就是Lua中鼎鼎大名的upvalue(也叫上值或外部局部变量)。
2018年12月11日 09点12分
3
错的不是熊吉君
那说明调用newcounter的时候。是直接从匿名函数开始执行的吗?跳过前面的local count=0
2018年12月11日 09点12分
ks_isaf
newCounter并不执行匿名函数,它把匿名函数当作结果返回,这个匿名函数保存到变量c1中了。
2018年12月11日 12点12分
错的不是熊吉君
@ks_isaf
哦懂了!谢谢
2018年12月11日 13点12分
1