问题标签 [yield]

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 投票
3 回答
1372 浏览

c# - C# yield return 未按预期返回项目

我有以下代码:

最初,当调用 ProcessQueue 时,队列中有一项。在 PerformAction 期间,我将向 _messageQueue 添加更多项目。但是,foreach 循环在初始项之后退出,并且看不到添加的后续项。

我感觉到队列的初始状态以某种方式被产量捕获。

有人可以解释发生了什么并给出解决方案吗?

0 投票
1 回答
7041 浏览

c# - 嵌套方法中的 C# 产量

如果我逐步执行以下代码,则会跳过对 ReturnOne() 的调用。

我只能假设编译器正在剥离它,因为我正在做的事情是无效的。我希望能够将我的枚举隔离为各种方法。这可能吗?

0 投票
1 回答
778 浏览

c# - 有没有办法在 VB.NET 中实现类似 Caliburn 的协同程序,因为没有 yield 关键字

请注意,我知道关于 SOvb.net问题中的其他产量。

我最近在玩Caliburn。那里有很多很棒的东西,包括协同程序的实现。

我所做的大部分工作都是基于 C# 的,但现在我还在为仅 VB.NET 的商店创建架构指南,基于 Rob 的小型 MVVM 框架

除了使用 VB 中的协程外,一切看起来都很好。由于使用了 VB 10,我们可以尝试类似Bill McCarthy 的建议

我只是无法理解如何用 VB 编写更复杂的协程方法,例如下面的方法(取自 Rob 的 GameLibrary):

知道如何实现这一点,或者对在 VB 中使用 Caliburn 协同程序有什么想法吗?


编辑:

Marco为我指明了正确的方向。在查看 Reflector - Rob 的 GameLibrary 的 Visual Basic 代码后,我设法将 Bill McCarthy 的 GenericIterator 修改为穷人的状态机:

我们可以这样使用它:

它绝对没有 C# 版本那么优雅,但它看起来是可行的。我们会看看这是否有任何问题。如果有人有更好的主意,我会全神贯注。

0 投票
5 回答
144 浏览

c# - 属性随产量而丢失

我正在尝试将一些代码转换IListIEnumerable

问题是,SetupSomething()来自基类并使用:

yield最终创建MoveNext()MoveNext()调用SetupSomething(),并且MoveNext()没有[Something(123)]属性。

我无法更改基类,因此看来我被迫保留IListIEnumerable手动实现(并将属性添加到MoveNext())。

在这种情况下,有没有其他方法可以使产量起作用?

0 投票
4 回答
3705 浏览

ruby-on-rails - Rails 3 - yield return 或 callback 不会在视图中调用 <%= yield(:sidebar) || 渲染('共享/侧边栏')%>

我正在将网站从 Rails 2(最新)迁移到 Rails 3(beta2)。
使用Ruby 1.9.1p378Ruby 1.9.2dev (2010-04-05 trunk 27225)进行测试

陷入困境,我不知道哪个部分会运作良好。怀疑yield是问题,但不知道确切。

在我的布局文件中,我经常使用以下技术:

app/views/layouts/application.html.erb


例如,部分看起来像:

app/views/shared/_sidebar.html.erb


现在是关键部分的时候了!
在任何视图中,我都想创建一个content_for块(可选)。这可以包含下面的 HTML 等示例。如果设置了这个块,里面的图片 HTML 应该呈现在application.html.erb. 如果没有,Rails 应该在右侧
渲染 Partial 。shared/_sidebar.html.erb

app/views/books/index.html.erb


所以你有这个想法。希望。这种技术在任何 Rails 2.x 应用程序中都运行良好。
现在,在Rails 3 (beta2)中,只有yieldPart 工作。

侧面不会通过or导轨或红宝石处理。

感谢您的投入和时间!

0 投票
1 回答
385 浏览

dsl - 以自定义语言实现“生成器”支持

我对语言设计有点迷恋,我目前正在玩我自己的爱好语言。(http://rogeralsing.com/2010/04/14/playing-with-plastic/

真正让我流血的一件事是“发电机”和“产量”关键字。我知道 C# 使用 AST 转换将枚举器方法转换为状态机。

但是它在其他语言中是如何工作的呢?有没有办法在没有 AST 转换的语言中获得生成器支持?例如,像 Python 或 Ruby 这样的语言是否使用 AST 转换来解决这个问题?

(问题是如何在不同语言的引擎盖下实现生成器,而不是如何用其中一种语言编写生成器)

0 投票
4 回答
23762 浏览

multithreading - 多线程,何时屈服与睡眠

为了澄清术语,yield 是线程放弃其时间片的时间。我感兴趣的平台是 POSIX 线程,但我认为这个问题很笼统。

假设我有消费者/生产者模式。如果我想限制消费者或生产者,哪个更好用,睡眠还是产量?我最感兴趣的是使用这两种功能的效率。

0 投票
1 回答
823 浏览

c# - 在扩展方法中使用“yield”运算符是否是线程安全的?

在扩展方法中使用 yield 运算符是线程安全的吗?

例如:

0 投票
3 回答
421 浏览

java - 将此递归 python 方法转换为 Java 的最佳方法是什么?

另一个问题中,我得到了一个很好的答案,涉及为中国邮递员问题生成某些集合。

提供的答案是:

这将输出以下的期望结果:

这确实展示了 Python 的表现力,因为这几乎就是我为算法编写伪代码的方式。我特别喜欢yield的使用以及将集合视为一等公民的方式。

然而,我的问题就在于此。

什么是最好的方法:

1.在Java中复制yield return构造的功能?最好保留一个列表并将我的部分结果附加到该列表中吗?您将如何处理 yield 关键字。

2.Hand 处理套组?我知道我可能会使用其中一个实现 Set 接口的 Java 集合,然后使用 removeAll() 之类的东西来给我一个集合差异。在那种情况下你会这样做吗?

最终,我希望在 Java 中将此方法简化为尽可能简洁和直接的方式。我在想这个方法的java版本的返回类型可能会返回一个int数组列表或类似的东西。

将此方法转换为 Java 时,您将如何处理上述情况?

0 投票
3 回答
3789 浏览

c# - yield 如何实现延迟加载的模式?

如何yield实现的模式lazy loading