clq
浏览(353) +
2023-09-04 11:17:04 发表
编辑
关键字:
闭包其实就是子函数
在 objectc 中应该是对应 block ,对应 golang 就是匿名函数。
其实这就是我们初学开发语言时的 pascal 中的函数内的子函数,不过闭包本身一般是可以长久存在并可以将指针传递给函数外执行。我忘记 pascal 中的子函数是否可以这样了,不过至少可以用来理解它的概念。
“闭包(Closure)”应该是新兴语言中才有的概念,新语言几乎都支持,因为确实好用。C 语言中尚不知如何实现。
放这里说明主要是介绍一下这个新语言特性的“官方”正式的术语关键字,要不搜索相关的资料时还真不好找。
--------------------------------------------------------
https://zhuanlan.zhihu.com/p/453787908
看一下维基百科的严谨定义:
在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性。
上面这段话实际上解释了闭包的一个定义和两个作用:
定义:闭包就是能够读取外部函数内的变量的函数。(前面已经讲解过)作用1:闭包是将外层函数内的局部变量和外层函数的外部连接起来的一座桥梁。(下一部分讲解)作用2:将外层函数的变量持久地保存在内存中。(下一部分讲解)
支持将函数当成对象使用的编程语言,一般都支持闭包。比如Python, JavaScript。
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.