由于它可以做什么或因为它做什么而关闭

好吧,这是一个迂腐的问题,但我想确保我正确理解定义。 使用封闭的绰号来形容, 可以解除在局部范围内的变量(无论他们实际上做或不)匿名函数或只有当他们举起局部范围内的变量?

换句话说,如果一个匿名函数有能力提升其局部范围内的变量(因为语言提供了这种能力),但没有,它仍然被认为是关闭?

我的理解是,只有当局部变量被解除时它才是闭包。 但是一个匿名函数不会(即使它可以)不是闭包。 所以并非所有匿名函数都是闭包,但所有闭包都是匿名函数。

再一次,对于这种琐事感到抱歉,但这些事情啃咬了我。 :)


假设你的意思是在计算机科学的背景下......

闭包是第一类函数,它捕获自由变量在其定义环境中的词汇绑定。 一旦它捕获了词法绑定,函数就变成了一个闭包,因为它“关闭了”这些变量。

请注意,这意味着关闭仅在运行时存在。

对于一个函数来说,它是一个正交函数,它是匿名函数或者是名字函数。 您可以创建一种语言,使您可以将指定的函数定义为闭包。

这是一个Python中的“命名”闭包:

def maker():
  count=[0]
  def counter():
    count[0]=count[0]+1
    return count[0]
  return counter

这里定义了一个关闭的重要定义:lua.org

当一个函数被写入另一个函数时,它可以完全访问函数中的局部变量; 这个特征被称为词法范围。 虽然这听起来很明显,但事实并非如此。 在编程语言中,词法范围界定和一流功能是一个强大的概念,但很少有语言支持该概念。

链接地址: http://www.djcxy.com/p/51243.html

上一篇: Closure Because of What it Can Do or Because it Does

下一篇: Using Interactive Toast Notifications with a old WPF Project