问题标签 [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 投票
15 回答
155375 浏览

function - “闭包”和“lambda”有什么区别?

有人可以解释一下吗?我了解它们背​​后的基本概念,但我经常看到它们可以互换使用,我感到困惑。

既然我们在这里,它们与常规函数有何不同?

0 投票
6 回答
37906 浏览

c# - 使用委托对列表进行排序问题

我正在尝试使用委托对列表进行排序,但出现签名匹配错误。编译器说我无法从“匿名方法”转换

我错过了什么?

以下是我找到的一些参考资料,他们也是这样做的。

开发者融合参考

微软参考

0 投票
9 回答
22567 浏览

java - Java 7 中的闭包

我听说闭包可能会在计划于明年夏天左右发布的下一个 Java 标准中引入。

这种语法会是什么样子?

我在某处读到,在 java 中引入闭包比在 java 5 中的泛型变化更大。这是真的吗?优点和缺点?

(到目前为止,我们肯定知道闭包不会包含在下一个 Java 版本中)

或者

编辑:http ://puredanger.com/tech/2009/11/18/closures-after-all/ :D

编辑2:重新思考JDK7:http: //blogs.oracle.com/mr/entry/rethinking_jdk7

编辑3:没有一刻可以失去!: http: //blogs.oracle.com/mr/entry/quartet

0 投票
10 回答
36586 浏览

python - 词法闭包是如何工作的?

当我在调查 Javascript 代码中的词法闭包问题时,我在 Python 中遇到了这个问题:

请注意,此示例有意避免lambda. 它打印“4 4 4”,这令人惊讶。我期待“0 2 4”。

这个等效的 Perl 代码做得对:

打印“0 2 4”。

你能解释一下区别吗?


更新:

问题在于i全球化。这显示相同的行为:

如注释行所示,i当时是未知的。尽管如此,它仍然打印“4 4 4”。

0 投票
3 回答
85369 浏览

c# - 访问修改后的闭包

尽管 ReSharper 抱怨说这是“访问修改后的闭包”,但上述内容似乎工作正常。任何人都可以阐明这一点吗?

(这个话题在这里继续)

0 投票
6 回答
1896 浏览

javascript - javascript 闭包和函数放置

函数的放置是否会影响范围内闭包的性能?如果是这样,放置这些功能的最佳位置在哪里?如果不是,那么闭包的隐含关联是否足以在逻辑上将函数放置在另一个地方?

例如,如果foo不依赖于 localState 的值,那么localState可以从foo访问这一事实是否会对foo的执行时间、内存使用等产生影响?

换句话说,这会是一个更好的选择吗?如果是,为什么?

Darius Bacon在下面建议,上面的两个示例是相同的,因为可以从块内的任何位置访问localState 。但是,下面的示例foo在块外定义可能是不同的情况。你怎么看?

0 投票
2 回答
1553 浏览

c# - C# 中基于事件的异步;任何通用的重构可能吗?

一些 API,如 WebClient,使用基于事件的异步模式。虽然这看起来很简单,并且可能在松散耦合的应用程序中运行良好(例如 UI 中的 BackgroundWorker),但它并不能很好地链接在一起。

例如,这是一个多线程程序,因此异步工作不会阻塞。(想象一下,这是在一个服务器应用程序中调用数百次——你不想阻塞你的 ThreadPool 线程。)我们得到 3 个局部变量(“状态”),然后进行 2 个异步调用,结果是首先馈入第二个请求(因此它们不能并行)。状态也可能发生变异(易于添加)。

使用 WebClient,事情最终会像下面这样(或者你最终创建了一堆对象来充当闭包):

}

有没有一种通用的方法来重构这种基于事件的异步模式?(即不必为每个这样的 API 编写详细的扩展方法?) BeginXXX 和 EndXXX 使它变得容易,但这种事件方式似乎没有提供任何方式。

0 投票
4 回答
2078 浏览

javascript - 将状态传递给 JavaScript 中的回调适当使用闭包?

假设您想在 JavaScript 中发出一个异步请求,但您想将一些状态传递给回调方法。以下是 JavaScript 中对闭包的适当使用吗?

如果没有,是否有更好或更惯用的方法?

0 投票
7 回答
8727 浏览

delphi - 有人可以向我解释匿名方法吗?

在一些很酷的东西中,Delphi 2009 也刚刚获得了匿名方法。我已经看过这些例子,以及关于匿名方法的博客文章,但我还没有得到它们。有人能解释为什么我应该兴奋吗?

0 投票
8 回答
10188 浏览

c# - 什么时候使用闭包?

我已经看到了关闭样本 -什么是“关闭”?

谁能提供何时使用闭包的简单示例?

具体来说,在哪些情况下关闭是有意义的?

让我们假设该语言没有闭包支持,如何仍然实现类似的事情?

为了不冒犯任何人,请以 c#、python、javascript、ruby 等语言发布代码示例。
对不起,我还不懂函数式语言。