问题标签 [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 回答
4400 浏览

python - yield as assignment 有什么作用?myVar = (产量)

我熟悉 yield 以返回一个值,这主要归功于这个问题

但是当它位于作业的右侧时,yield 会做什么?

在研究状态机和协程时,我在此博客的代码示例中遇到了这一点。

0 投票
2 回答
6435 浏览

ruby-on-rails - Rails: using "content_for" after the corresponding "yield" inside layout

I think this has been asked before but even though I searched Google I haven't come up with a solution.

So this is what I'm trying to do in Rails 2.3.5:

Notice the yield before the content_for.

I know that Rails - by default - doesn't allow the content of :head to be defined after yield has been used - makes sense.

I even tried hooking into the template render process but no success so far.

So my goal is to be able to define content_for inside partials/templates and have the "yield" somehow delayed and executed just before the response is send to the browser.

Has somebody come up with a solution?

Greetings and thanks, Frank

Update I'll go with weppos's idea and try myself on rack middleware. thanks

0 投票
1 回答
1261 浏览

python - 收益率与回报的不同结果

我真的不明白yield语句在这种情况下是如何工作的。问题是给定一个没有括号的表达式,编写一个函数来生成所有可能的全括号(FP)表达式。比如说,输入'1+2+3+4'应该生成为 5 个 FP 表达式:

  1. (1+(2+(3+4)))
  2. (1+((2+3)+4))
  3. ((1+2)+(3+4))
  4. ((1+(2+3))+4)
  5. (((1+2)+3)+4)

我的代码如下。

如果我使用return语句(注释掉的行),那么代码将按预期工作。但是,当我更改yield为代码显示的语句时,我只得到前 4 个结果。如果输入表达式的操作数增加,那么当然会丢失更多的结果。例如,对于 input '1+2+3+4+5',我只得到 8 而不是 14。

我终于弄清楚了通过注释掉该行firstG, secondG = f(first), f(second)并替换该行来使代码工作的方法

for e in ('(' + e1 + op + e2 + ')' for e1 in firstG for e2 in secondG):

经过

for e in ('(' + e1 + op + e2 + ')' for e1 in f(first) for e2 in f(second)):

这意味着发电机的一些“信息”由于线路而丢失,firstG, secondG = f(first), f(second)但我无法弄清楚真正的原因。你们能给我一些想法吗?

0 投票
8 回答
82762 浏览

c# - IEnumerable 和 Recursion 使用 yield return

我有一种IEnumerable<T>用于在 WebForms 页面中查找控件的方法。

yield return该方法是递归的,当返回递归调用的值时,我在返回我想要的类型时遇到了一些问题。

我的代码如下所示:

这当前会引发“无法转换表达式类型”错误。但是,如果此方法返回 type IEnumerable<Object>,则代码会构建,但输出中会返回错误的类型。

有没有一种yield return在使用递归的同时使用的方法?

0 投票
1 回答
1308 浏览

silverlight - 递归silverlight Element finder扩展方法

我需要一个扩展方法来遍历我的 Silverlight 页面上的所有文本框。假设我总是使用网格布局,那么我有:

现在,我可以这样称呼它:

这永远不会触发。我相信是 OfType 无法区分 UI 元素。

我该怎么做?我想展平视觉树然后循环。不仅仅是文本框,而是得到所有我想要的东西。我是在错误的地方屈服还是过于频繁?

编辑:

当前代码

网格是

仍然只让它深入一层,返回 6 个网格和一个按钮!

我目前的遍历功能是:

这只是知道我们正在处理网格,因此不需要第二个参数。我只是从迭代器框中产生,而不是从应该回调到带有子网格的 Traverse 函数的第一行产生。

0 投票
2 回答
7148 浏览

scala - 使用 Scala 延续实现收益(收益回报)

如何yield return使用 Scala 延续来实现 C#?我希望能够以Iterator相同的风格编写 Scala 。在这篇 Scala 新闻帖子的评论中有一个刺,但它不起作用(尝试使用 Scala 2.8.0 beta)。相关问题中的答案表明这是可能的,但尽管我已经玩了一段时间的定界延续,但我似乎无法完全理解如何做到这一点。

0 投票
2 回答
6383 浏览

python - 从一个可迭代对象一次产生多个对象?

如何从可迭代对象一次生成多个项目?

例如,对于任意长度的序列,我如何迭代序列中的项目,每次迭代以 X 个连续项目为一组?

0 投票
2 回答
1044 浏览

c# - 有什么方法可以让产生的迭代器在出现异常时继续到下一个项目?

当一个迭代器块内发生异常时,有什么方法可以让 yield created 迭代器继续到下一个项目?

这目前不起作用:

0 投票
2 回答
449 浏览

c# - 在状态转换中产生最短路径

我正在尝试提出一种树遍历的算法,但我被卡住了。

这是一个相当困难的问题(与我问过的其他问题相比),所以我可能需要自己继续思考。但我想我会把它扔在这里。

我有以下类结构:

当 currentTransistions 完全填写时,它看起来像这样(对我来说):

这里的想法是我已经映射了 TFS 工作项的状态转换。我现在需要的是一种说“给定当前状态,我如何到达另一个状态”的方式。

理想情况下,它看起来像这样:

GetToFinalState 必须有一种方法来计算最短路径并使用 C# 的 yield 功能为 foreach 语句一次提供一个。

我以前用过产量一,所以我想我可以弄清楚。但我不确定如何在找到最短路径的同时做到这一点(无需在函数中的每次重新计算)?

如果你已经读到这里,谢谢。如果您提供答案,请再次感谢。

0 投票
1 回答
515 浏览

ruby - 重写简单的 ruby​​ 函数以使用块

我不知道正确的术语。我试图用谷歌搜索它,但由于这个原因找不到任何东西。

我正在编写一个 Ruby 库,我想重写这些函数,以便它们按如下方式工作,因为我更喜欢它的可读性(在块内?)

我有一个功能可以做到这一点

我想重写它,让它像这样工作

你能概述一下我做这件事的方法吗?