好吧,这是一个有点迂腐的问题,但我想确保我正确理解了这个定义。闭包绰号是用来描述匿名函数的can提升局部作用域中的变量(无论它们实际上是否这样做)或仅当它们do在局部范围内提升变量?
换句话说,如果匿名函数具有ability在其本地范围内提升变量(因为该语言提供了该功能),但没有,它仍然被视为闭包吗?
我的理解是,只有当局部变量被解除时,它才是闭包。但是不这样做(即使可以)的匿名函数不是闭包。因此,并非所有匿名函数都是闭包,但所有闭包都是匿名函数。
再次,为我的迂腐感到抱歉,但这些事情困扰着我。 :)
假设您的意思是在计算机科学的背景下......
闭包是一个一流的函数,它捕获其定义环境中自由变量的词法绑定。一旦它捕获了词法绑定,该函数就变成了一个闭包,因为它“关闭”了这些变量。
请注意,这意味着闭包仅存在于运行时。
对于一个函数来说,闭包与匿名或命名函数是正交的。您可以创建一种语言,允许您将命名函数定义为闭包。
这是 Python 中的“命名”闭包:
def maker():
count=[0]
def counter():
count[0]=count[0]+1
return count[0]
return counter
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)