问题标签 [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 投票
1 回答
549 浏览

python - Python产量生成器函数

所以我有这个巨大的类,其中唯一相关的代码是:

...我将一些值从 csv 文件加载到 dict 中。
问题是 csvDictReaderCol.get_col_is_numeric('Ann_payrll') 返回 None 即使列中的所有值都是数字。为什么 yield 会生成 None 值?

0 投票
4 回答
349 浏览

c# - 为什么调用 Enumerable.First() 似乎返回枚举中第一项的副本

呃,不太清楚如何表达这个但是..

给定一个使用 yield return 创建的 IEnumerable,包含一个类的三个实例,为什么调用 .First() 似乎返回第一个实例的“副本”?

见以下代码;

运行它会产生以下输出;

但我希望 IList 和 IEnmerable 表现相同并像这样输出......

我错过了什么?!

0 投票
3 回答
1163 浏览

scala - 在scala中使用yield返回和可迭代的集合

我在 Scala 中有一个 DateTime 和 TimeSpan 类(假设 < 和 + 运算符正常工作)。我正在尝试定义一个“范围”函数,该函数需要开始/停止时间和步进时间跨度。在 C# 中,我会用产量来做这件事,我想我应该能够在 Scala 中做同样的事情......除了我遇到了一个奇怪的错误。

在 'yield t' 行,我得到“Illegal start of statement”。

看着这段代码,我很好奇两件事:1)我做错了什么?2) 编写的代码非常必要(使用 var t 等)。在 Scala 中执行此操作的更实用的方法是什么?

谢谢!

0 投票
3 回答
773 浏览

c# - “yield 关键字”在迭代器块之外有用吗?

yield关键字文档说:

yield 关键字向编译器发出信号,表明它出现的方法是一个迭代器块。

yield我在任何迭代器块之外都遇到了使用关键字的代码。这应该被视为编程错误还是很好?

编辑抱歉忘记发布我的代码:

谢谢。

0 投票
1 回答
1061 浏览

c# - 'yield' 关键字是语法糖吗?它的实现是什么

可能重复:
yield 语句实现

我看过msdn 文档,上面写着:

yield 关键字向编译器发出信号,表明它出现的方法是一个迭代器块。编译器生成一个类来实现迭代器块中表达的行为。在迭代器块中,yield 关键字与 return 关键字一起使用,为枚举器对象提供值。

所以这意味着yield关键字是一种语法糖,编译器完成了生成迭代器的繁重工作。(我对么 ?)

那么这个语法糖生成的实现代码是什么。

0 投票
2 回答
1109 浏览

c# - 写收益率的另一种方式

.FirstOrDefault()有没有办法通过以下设置摆脱它。我喜欢使用 yield 语句,但我想将 IsRequired 方法压缩到我不必使用.FirstOrDefault().

播放器验证器

验证器助手

0 投票
4 回答
14325 浏览

c++ - C++ 的“yield”关键字,如何从我的函数返回迭代器?

考虑以下代码。

当我在考虑是否可以期望返回值优化 (RVO) 发生时,我找到了 Jerry Coffin [强调我的]的答案:

至少在国际海事组织,这通常是一个糟糕的主意,但不是出于效率原因。这是一个糟糕的主意,因为所讨论的函数通常应该编写为通过迭代器产生其输出的通用算法。几乎所有接受或返回容器而不是在迭代器上操作的代码都应该被认为是可疑的。

不要误解我的意思:有时传递类似集合的对象(例如,字符串)是有意义的,但对于引用的示例,我认为传递或返回向量是一个糟糕的主意。

有一些 Python 背景,我非常喜欢 Generators。实际上,如果它是 Python,我会将上面的函数编写为生成器,即避免在发生其他任何事情之前处理整个数据的必要性。例如像这样:

如果我正确解释了 Jerry Coffins 的注释,这就是他的建议,不是吗?如果是这样,我如何在 C++ 中实现它?

0 投票
4 回答
11083 浏览

scala - Scala - 'for-yield' 子句可以在某些条件下不产生任何结果吗?

在 Scala 语言中,我想编写一个在给定范围内产生奇数的函数。该函数在迭代偶数时打印一些日志。该函数的第一个版本是:

如果我省略打印日志,实现变得非常简单:

但是,我不想错过日志记录部分。如何更紧凑地重写第一个版本?如果能改写成这样就好了:

0 投票
1 回答
5116 浏览

python - Python - 了解生成器的发送函数

我正在学习 Python yield,发现这yield不仅是生成器输出返回值的方式,也是将值放入生成器的方式。例如下面的代码

在全局范围内,它是生成器send的值'x',因此将在其中输出。但我无法理解'y'fx 0 y 1

  • 有 2yield秒,但有 3send秒。为什么要None第一时间发送?
  • StopIteration它最后抛出一个send。有什么办法可以避免这个异常?

谁能解释一下?提前致谢。

0 投票
1 回答
199 浏览

ruby - Ruby:重载收益函数

我在学习 Ruby 时注意到,每种方法的这两种用法都可以工作并产生相同的输出,我想知道 Ruby 是如何实现这一点的(以及如何在我自己的函数中实现这一点):

我的理解是在编写接受代码块的方法的定义时,使用yield方法将参数传递给代码块并调用代码块。但是如何利用 yield 方法,让它根据提供的代码块传递不同的参数呢?在示例情况下,当块内使用两个参数(即,第一个、第二个)时,yield 方法似乎传递了单个数组元素,而在块内使用一个参数(即,数组)时,它传递了数组本身。 )。