问题标签 [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.
c# - C# yield return 未按预期返回项目
我有以下代码:
最初,当调用 ProcessQueue 时,队列中有一项。在 PerformAction 期间,我将向 _messageQueue 添加更多项目。但是,foreach 循环在初始项之后退出,并且看不到添加的后续项。
我感觉到队列的初始状态以某种方式被产量捕获。
有人可以解释发生了什么并给出解决方案吗?
c# - 嵌套方法中的 C# 产量
如果我逐步执行以下代码,则会跳过对 ReturnOne() 的调用。
我只能假设编译器正在剥离它,因为我正在做的事情是无效的。我希望能够将我的枚举隔离为各种方法。这可能吗?
c# - 有没有办法在 VB.NET 中实现类似 Caliburn 的协同程序,因为没有 yield 关键字
我最近在玩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# 版本那么优雅,但它看起来是可行的。我们会看看这是否有任何问题。如果有人有更好的主意,我会全神贯注。
c# - 属性随产量而丢失
我正在尝试将一些代码转换IList
为IEnumerable
:
问题是,SetupSomething()
来自基类并使用:
yield
最终创建MoveNext()
,MoveNext()
调用SetupSomething()
,并且MoveNext()
没有[Something(123)]
属性。
我无法更改基类,因此看来我被迫保留IList
或IEnumerable
手动实现(并将属性添加到MoveNext()
)。
在这种情况下,有没有其他方法可以使产量起作用?
ruby-on-rails - Rails 3 - yield return 或 callback 不会在视图中调用 <%= yield(:sidebar) || 渲染('共享/侧边栏')%>
我正在将网站从 Rails 2(最新)迁移到 Rails 3(beta2)。
使用Ruby 1.9.1p378和Ruby 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)中,只有yield
Part 工作。
侧面不会通过or
导轨或红宝石处理。
感谢您的投入和时间!
dsl - 以自定义语言实现“生成器”支持
我对语言设计有点迷恋,我目前正在玩我自己的爱好语言。(http://rogeralsing.com/2010/04/14/playing-with-plastic/)
真正让我流血的一件事是“发电机”和“产量”关键字。我知道 C# 使用 AST 转换将枚举器方法转换为状态机。
但是它在其他语言中是如何工作的呢?有没有办法在没有 AST 转换的语言中获得生成器支持?例如,像 Python 或 Ruby 这样的语言是否使用 AST 转换来解决这个问题?
(问题是如何在不同语言的引擎盖下实现生成器,而不是如何用其中一种语言编写生成器)
multithreading - 多线程,何时屈服与睡眠
为了澄清术语,yield 是线程放弃其时间片的时间。我感兴趣的平台是 POSIX 线程,但我认为这个问题很笼统。
假设我有消费者/生产者模式。如果我想限制消费者或生产者,哪个更好用,睡眠还是产量?我最感兴趣的是使用这两种功能的效率。
c# - 在扩展方法中使用“yield”运算符是否是线程安全的?
在扩展方法中使用 yield 运算符是线程安全的吗?
例如:
java - 将此递归 python 方法转换为 Java 的最佳方法是什么?
在另一个问题中,我得到了一个很好的答案,涉及为中国邮递员问题生成某些集合。
提供的答案是:
这将输出以下的期望结果:
这确实展示了 Python 的表现力,因为这几乎就是我为算法编写伪代码的方式。我特别喜欢yield的使用以及将集合视为一等公民的方式。
然而,我的问题就在于此。
什么是最好的方法:
1.在Java中复制yield return构造的功能?最好保留一个列表并将我的部分结果附加到该列表中吗?您将如何处理 yield 关键字。
2.Hand 处理套组?我知道我可能会使用其中一个实现 Set 接口的 Java 集合,然后使用 removeAll() 之类的东西来给我一个集合差异。在那种情况下你会这样做吗?
最终,我希望在 Java 中将此方法简化为尽可能简洁和直接的方式。我在想这个方法的java版本的返回类型可能会返回一个int数组列表或类似的东西。
将此方法转换为 Java 时,您将如何处理上述情况?
c# - yield 如何实现延迟加载的模式?
如何yield
实现的模式lazy loading
?