问题标签 [yield-keyword]

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 投票
2 回答
169 浏览

iterator - 如何实现识别迭代器的编译器?

我使用迭代器已经有一段时间了,我喜欢它们。

但是,尽管我仔细考虑过,但我无法弄清楚“如何实现识别迭代器的编译器”。我也对此进行了研究,但找不到任何资源来解释编译器设计上下文中的情况。

详细地说,大多数关于迭代器的文章都暗示有某种“魔法”来实现所需的行为。他们建议编译器维护一个状态机,以便跟踪执行的位置(看到最后一个“收益返回”的位置)。我对启用惰性求值的迭代器的这个属性特别感兴趣。

顺便说一句,我知道什么是状态机,已经上过编译器设计课程,研究过龙之书。但显然,我无法将我所研究的内容与 csc 的“魔法”联系起来。

任何知识或不同的想法都会受到赞赏。

0 投票
7 回答
11327 浏览

javascript - Javascript 检查产量支持

我阅读了 JavaScript 中的 yield 关键字,我需要在我的项目中使用它。我读到这个关键字是从某个版本的 JS 开始实现的,所以我认为旧浏览器不支持它(对吗?)。

有没有办法检查是否支持 yield 关键字?或者至少有办法检查 JS 的版本是否大于或等于实现该关键字的版本(1.7)?

0 投票
2 回答
1428 浏览

swing - 用于设置值的 scala

我想创建一个GridBagPanel.Constraints. 我在 scala 编程书中读到它有一个很酷的for-yield结构,但我可能还没有理解它的正确工作方式,因为我的代码无法编译。这里是:

我想生成一个List[Constraints]并且为每个约束设置不同的 x,y 值,所以稍后,当我稍后添加组件时,它们将位于网格中。

0 投票
5 回答
859 浏览

c# - 使用 YIELD 是一种返回集合的只读方式吗?

我正在编写一个接口,它有一个我想只读的集合属性。我不希望界面的用户能够修改集合。我发现创建只读集合属性的典型建议是将属性的类型设置为 IEnumerable,如下所示:

然而,这并不能阻止用户将 IEnumerable 转换回 List 并对其进行修改。

如果我使用Yield关键字而不是_mylist直接返回,这会阻止我界面的用户修改集合。我是这么认为的,因为那时我只是一个一个地返回对象,而不是实际的集合。

0 投票
3 回答
2026 浏览

ruby-on-rails-3 - 当辅助方法使用 yield 关键字时,Rails 部分模板重复呈现

当使用带有部分布局的rails以及使用yield关键字编码为迭代器的辅助方法时,我看到了一些奇怪的行为。我希望有人可以:

  1. 解释发生了什么以及为什么我得到重复的渲染,也许
  2. 建议一种替代方法,希望不仅仅是将我的辅助方法重新编码为一个返回列表的简单函数(我已经将其作为临时解决方法)

因此,如果我在我的 rails 3 应用程序中创建以下 3 件事,我会得到意想不到的输出。

[更新] 我测试了以下组合:

所以也许这是一个 erb 与 haml 的事情,但是当我最初发现它时,它是在 haml 模板上。嗯……有谁知道怎么回事???

A) 一个看起来像这样的主模板 (app/views/main/index.html.erb)

B) 像这样的辅助方法 (app/helpers/main_helper.rb)

C)像这样的部分模板(app/views/main/_partial.html.erb)

当我在浏览器中查看结果时,我看到“iterator running with”总共阻塞了 8 次(1 2 3 4 1 2 3 4)。我已经确定它是 my_iterator 中的 yield 与 rails 部分模板机制有关。如果我对 my_iterator 进行如下编码,则输出与我预期的一样。(我还需要更改我的部分模板来执行 my_iterator.each)

有没有办法对此进行编码,这样我就不会使用rails并获得重复的渲染,但仍然可以使用yield将辅助方法编码为迭代器?另外,有人可以准确解释重复渲染是如何发生的吗?

0 投票
8 回答
20904 浏览

ruby - Ruby 中的“yield”关键字有什么作用?

我遇到了以下 Ruby 代码:

each方法有什么作用?特别是,我不明白是什么yield

0 投票
3 回答
10006 浏览

scala - 是否可以使用 'yield' 来生成 'Iterator' 而不是 Scala 中的列表?

是否可以在不评估每个值的情况下使用 yield 作为迭代器?

当很容易实现复杂的列表生成时,这是一个常见的任务,然后你需要将它转换为Iterator,因为你不需要一些结果......

0 投票
2 回答
1713 浏览

python - Django中'yield'函数的替代方法是什么

'yield' 函数将输出流式传输到浏览器,即将值附加到响应中。

我的要求是,不是“附加”,而是有任何内置函数覆盖旧值,或者只是说不将新值附加到旧值..?

解释我的要求:

以下是我的“views.py”中的函数:

以下是上述函数的输出:

如您所见,百分比被附加到先前传递的值中,而我想用新值覆盖旧值。

在 Django/python 中是否有针对这种行为的内置函数?或者我可以通过代码模拟吗?

提前致谢。

0 投票
1 回答
213 浏览

dynamic - 为什么 C# 编译器在“收益返回”和动态之前声称“使用未分配的变量”?

编译器抱怨resultingThing在分配给之前正在使用下面的代码。

为什么它声称这一点?

我尝试了一个不同版本的方法,其中没有yield用法(例如 just return IEnumerable<IThing>)但使用dynamic参数,我尝试了一个没有传入dynamic的方法版本(即我们在C# 的早期版本)。这些编译。

0 投票
2 回答
2268 浏览

javascript - 带有“yield”关键字的 Javascript 生成器

我正在试验 HTML5 的新 canvas 标签,在其中我渲染和动画一些简单的形状。我的画布脚本具有以下功能:

出于某种原因,这段代码在 Firefox 中执行得非常好,但在 Chrome 中根本不起作用。两种浏览器都是最新版本,我的脚本标签标记为 version=1.8(version=1.7 也不起作用)。

'yield' 关键字在 Chrome 中是否不起作用?我当然希望如此;生成器使代码更清晰!

对于这个问题,我找不到任何具体的“是”或“否”答案。