问题标签 [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.
java - Java中的匿名内部类有没有办法“失去”它们的范围?
当我将匿名内部类传递给函数时,我可以从该类的方法中引用当前范围内的变量,如下所示:
现在,在上面的 someMethod 运行之后,调用者和带有小匿名的队列可以分道扬镳,据我了解,JVM 保持所有引用正常,因此这始终有效。
但是,如果,例如,队列被序列化,程序关闭并重新启动,然后队列被反序列化并且其中的项目应该运行,而 Caller 实例早已消失并被遗忘,该怎么办?
还有其他方法可以让周围的对象和匿名内部类以一种在匿名类内部调用不再起作用的方式分离吗?
java - 是否有可序列化的标准闭包接口?
如果没有,也许你可以告诉我为什么。
当我的类被序列化时,我得到 NotSerializableException。
在类内部,我将这个匿名类传递给一个方法:
这个问题仍然没有答案。我想知道是否有实现 Serializable 的标准 Closure 接口
language-design - 可变或不可变闭包
在命令式、面向对象的语言中,具有可变或不可变闭包是否更有意义?
例如:
如果闭包是可变的,这将打印:
如果它是不可变的,它将打印:
我意识到即使使用不可变的闭包,您仍然可以这样做:
那么,拥有可变闭包或不可变闭包会更好,还是两者都有选择?不可变闭包似乎更容易实现,所以在这一点上,我想我会继续这样做,除非有充分的理由不这样做。
c# - 如何在 .NET 中实现匿名方法中捕获的值
我对实际的 .NET 实现及其背后的决定感到好奇。
例如,在 Java 中,匿名类中使用的所有捕获值都必须是最终值。.NET 中似乎取消了此要求。
此外,与引用类型相比,值类型的捕获值的实现是否存在差异?
谢谢
javascript - 循环内的 JavaScript 闭包——简单实用的示例
它输出这个:
我的价值:3
我的价值:3
我的价值:3
而我希望它输出:
我的价值:0
我的价值:1
我的价值:2
当函数运行延迟是由使用事件监听器引起时,也会出现同样的问题:
… 或异步代码,例如使用 Promises:
在for in
和for of
循环中也很明显:
这个基本问题的解决方案是什么?
groovy - 替换java内部类的最佳常规闭包习语?
作为 groovy 的新手...
我正在尝试替换事件侦听器、过滤器等的 java 习惯用法。
我在 groovy 中的工作代码如下:
现在,这与我在 java 中的习惯相去甚远,其中 Query 接口的实现是在 odb.getObjects() 方法中完成的。如果我在哪里编写“java”代码,我可能会执行以下操作,但它不起作用:
或者更好,我希望它是这样的:
但是,将“匹配”方法与外部脚本上下文相关联并让我失望的是什么groovy。
我发现 groovy... groovy 反正我会坚持学习更多。谢谢。
我应该问的是我们如何在 groovy 中做“匿名”类。这是java的成语:
groovy 可以在没有额外的类声明的情况下如此简洁吗?
groovy - 如何从 groovy 闭包中返回并停止执行?
我想从闭包中返回,就像在循环中使用 break 语句一样。
例如:
在上面的 if 语句中,我想停止遍历列表并离开闭包以避免不必要的迭代。
我见过一个解决方案,其中在闭包内引发异常并在外部捕获,但我不太喜欢该解决方案。
除了更改代码以避免这种算法之外,是否有任何解决方案?
java - 使用 function-java 向 Java 生产项目添加闭包有多安全?
我很想在 Java 中使用闭包。我已经读到它们可能会或可能不会进入 Java 7。但是一个名为functional-java的开源项目已经实现了包括闭包在内的功能特性。
在企业生产应用程序中使用这样的库有多安全?
目前有没有更好的方法向 Java 添加闭包?
closures - monad 和闭包有什么区别?
我有点困惑阅读两者之间的定义。它们实际上可以在定义方面相交吗?还是我完全迷路了?谢谢。