问题标签 [closures]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
4935 浏览

object - 闭包和对象

函数式编程..就像经典(马克吐温的类型)。在阅读另一篇关于 SICP 的文章时,人们正在谈论关闭对那里的思考产生的巨大影响,我想起了这个,这是我很久以前读过的

闭包是穷人的对象 对象是穷人的闭包

(不记得确切的来源,但它是程序员罗塞塔石碑,或编程之禅,或编程的 tau ......谷歌变得如此拥挤,无法找到原始来源)

所以联合程序员......你的看法是什么......是你一直缺少的东西......或者只是一些语法糖,预处理器可以做!

0 投票
6 回答
3043 浏览

python - Python 中的闭包

我一直在尝试学习 Python,虽然我热衷于在 Python 中使用闭包,但我一直无法让一些代码正常工作:

基本上,这应该做的是使用闭包来维护函数的记忆状态。我意识到可能有很多更快、更容易阅读并且通常更“Pythonic”的方法来实现它;但是,我的目标是准确了解闭包在 Python 中的工作原理,以及它们与 Lisp 的不同之处,因此我对替代解决方案不感兴趣,只是为什么我的代码不起作用以及我能做些什么(如果有的话)来修复它。

我遇到的问题是当我尝试使用fibm- Python 坚持get没有定义:

鉴于我是 Python 新手,我不知道我是否做错了什么,或者这只是语言的限制。我希望是前者。:-)

0 投票
7 回答
11890 浏览

c# - foreach 标识符和闭包

在以下两个片段中,第一个是安全的还是必须做第二个?

安全我的意思是每个线程都保证从创建线程的同一个循环迭代中调用 Foo 上的方法?

还是必须将对新变量“本地”的引用复制到循环的每次迭代中?

-

更新:正如 Jon Skeet 的回答所指出的,这与线程没有任何关系。

0 投票
4 回答
494 浏览

javascript - 我应该在哪里定义我的 Javascript 闭包?

我正在创建自己的 JavaScript 类数组对象,并且我有调用闭包的方法。我只是想知道定义闭包的最有效位置在哪里。

例如,假设我有一个 map 函数和一个 Chop 函数:

这样做是否更有效率?

0 投票
2 回答
1722 浏览

groovy - Groovy 中闭包参数的默认值

有没有办法在 Groovy 中使用带有闭包的默认参数值?

这是我到目前为止所尝试的:

这给了我以下结果:

似乎调用salute2()忽略了敬礼默认值"Hola"

0 投票
3 回答
405 浏览

c# - 这还是闭包吗?

testit() 方法是一个闭包。aString 已超出范围,但 testit() 仍然可以在其上执行。testit2() 使用的变量没有超出范围(mystring),但也没有传递给 testit2()。testit2() 是否被视为闭包?

在第二个示例中,可以在方法之外更新 mystring,这些更改将反映在 testit2() 中。这不像普通方法,它只能将 mystring 作为参数捕获。

0 投票
5 回答
5007 浏览

python - Python序列化词法闭包?

有没有办法使用标准库在 Python 中序列化词法闭包?pickle 和 marshal 似乎不适用于词法闭包。我并不真正关心二进制与字符串序列化等的细节,它只需要工作。例如:

我希望能够将关闭实例转储到文件中并将它们读回。

编辑:可以解决此问题的一种相对明显的方法是使用一些反射技巧将词法闭包转换为类对象,反之亦然。然后可以转换为类,序列化,反序列化,转换回闭包。哎呀,鉴于 Python 是鸭子类型的,如果你重载类的函数调用运算符以使其看起来像一个函数,你甚至不需要将它转换回闭包并且使用它的代码不会知道区别。如果有任何 Python 反射 API 专家,请说出来。

0 投票
6 回答
2647 浏览

java - 静态方法使 Java 成为一种伪函数语言?

我一直在考虑Misko Hevery的一篇文章,即 Java 中的静态方法是可测试性的死亡。我不想讨论可测试性问题,而是更多关于静态方法的概念。为什么人们如此讨厌它?

确实,我们没有闭包(但我们有一个有点尴尬的匿名函数)、lambdas 和函数作为第一类对象。在某种程度上,我认为静态方法可以用来模仿函数作为第一类对象。

0 投票
20 回答
191779 浏览

javascript - javascript中自执行函数的目的是什么?

在 javascript 中,你什么时候想使用这个:

对此:

0 投票
7 回答
6647 浏览

emacs - 如何在 Emacs Lisp 中进行闭包?

我正在尝试动态创建一个返回一个常量值的函数。

在 JavaScript 和其他现代命令式语言中,我会使用闭包:

但是 Emacs lisp 不支持这些。

我可以创建身份功能和部分功能应用程序的组合,但也不支持。

那么我该怎么做呢?