ffl*_*ing 5 javascript python functional-programming first-class-functions
我理解闭包的广义概念(函数在定义时与环境快照一起存储),作为一等公民的函数意味着函数可以像语言中的任何其他数据类型一样传递和返回.
有趣的是,我所使用的所有语言都具有一等公民的功能,例如Python,Javascript,Scheme似乎总是有闭包.
事实上,传递和返回函数的闭包是实现函数作为语言的一等公民的一种方式,但我不确定是否能够编写它们是函数作为一等公民的直接和不可避免的后果.
提出更具体的条款:
你能提供一个实际的例子,其拥有一流的功能的语言,但它是不是可以写倒闭?
在这些语言中,函数是第一类对象。
当一个函数定义在另一个函数内部时,嵌套函数称为高阶函数。
函数是一流对象意味着函数与其他对象(例如数字、字符串、类等)没有区别。因此,您可以将它们作为参数传递,或者像任何其他对象一样返回它们,而无需调用它们。例如,在 Python 中,您可以通过省略括号来返回函数本身而不调用它。
能够编写另一个包装函数可以返回的高阶函数正是闭包的定义,并且是将函数作为第一类对象的结果。
因此,你的问题的答案是:是的,闭包是将函数作为第一类对象的必要条件,因为它们是其结果。更直接地说,你不能拥有一流的函数,却不能写闭包。
请注意,某些没有一等函数的语言(Pascal、Algol)具有某种称为词法闭包的闭包。但它们的威力远不及实际关闭。
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |