【发布时间】:2013-11-24 17:16:15
【问题描述】:
“Magento PHP 开发人员指南”第 2 章指出:
Zend Framework 2 使用 100% 面向对象的代码并利用大部分 PHP 5.3 的新特性,即命名空间、后期静态绑定、 lambda 函数和闭包。
虽然What is the difference between a 'closure' and a 'lambda'? 的帖子有一些答案(例如,lambda 只是一个匿名函数,而闭包是一个可以访问不在其参数列表中的变量的函数),但似乎特定于 Python编程语言(其中提到了 Scheme 编程语言)。 例如,根据帖子,在 Python 中,似乎可以有不是 lambda 的闭包,也可以有不是闭包的 lambda。
但是,我对 PHP 编程语言感兴趣,而不是 Python。下面的答案之一似乎指出,在 PHP 中,所有闭包都是 lambda,这与与 Python 状态相关的帖子相冲突。
在我看来,这些概念的细节因语言而异,我对 PHP 很感兴趣,因此发了这篇文章。
所有这些都令人困惑。虽然我认为 lambda 函数通常只是未命名的函数,但以下 Wikipedia 文章更多地介绍了闭包:
http://en.wikipedia.org/wiki/Closure_%28computer_science%29
虽然在 PHP 中没有示例。
【问题讨论】:
-
你可以先搜索再问;这是同样的问题:stackoverflow.com/questions/220658/…
-
以下来自 Philip Brown 的 article 很好地总结了 closure 和 lambda 函数之间的区别。还提供了很好的例子。
标签: php lambda closures php-closures