Closures are poor man's objects and vice versa.
我看过这个说法at many places在网络上( including SO ),但我不太明白它的含义。有人可以解释一下它的确切含义吗?
如果可能,请在您的答案中包含示例。
最佳答案
Objects are poor man's closures.
考虑 Java。 Java 是一种面向对象的编程语言,没有对真正的词法闭包的语言级别支持。作为一种解决方法,Java 程序员使用匿名内部类来关闭词法范围内可用的变量(前提是它们是final
)。从这个意义上说,对象是穷人的闭包。
Closures are poor man's objects.
考虑 haskell 。 Haskell 是一种函数式语言,没有对真实对象的语言级别支持。然而,它们可以使用闭包进行建模,如 this 中所述。 Oleg Kiselyov 和 Ralf Lammel 的优秀论文。从这个意义上说,闭包是穷人的对象。
<小时/>如果您有面向对象的背景,您可能会发现用对象来思考更自然,因此可能将它们视为比闭包更基本的概念。如果您有 FP 背景,您可能会发现闭包的思考更自然,因此可能将它们视为比对象更基本的概念。
这个故事的寓意是,闭包和对象是可以彼此表达的想法,没有一个比另一个更基本。这就是正在考虑的声明的全部内容。
在哲学中,这被称为model dependent realism .
关于functional-programming - "Closures are poor man' s 对象,反之亦然”-这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497801/