Tag: yield

recursion使用yield

有什么方法可以混合recursion和yield语句吗? 例如,一个无限数量的生成器(使用recursion)会是这样的: def infinity(start): yield start # recursion here … >>> it = infinity(1) >>> next(it) 1 >>> next(it) 2 我试过了: def infinity(start): yield start infinity(start + 1) 和 def infinity(start): yield start yield infinity(start + 1) 但他们都没有做我想要的,第一个停止后,它start ,第二个start ,然后发电机,然后停下来。 注:请,我知道你可以使用while循环来做到这一点: def infinity(start): while True: yield start start += 1 我只是想知道这是否可以recursion地完成。

有没有Java相当于C#的'yield'关键字?

我知道Java本身没有直接的等价物,但也许是第三方? 这真的很方便。 目前我想实现一个迭代器,它产生一个树中的所有节点,大约有五行代码和yield。

IEnumerable嵌套的收益率返回

我有以下function来获取卡的validation错误。 我的问题涉及到处理GetErrors。 两种方法都有相同的返回typesIEnumerable<ErrorInfo> 。 private static IEnumerable<ErrorInfo> GetErrors(Card card) { var errors = GetMoreErrors(card); foreach (var e in errors) yield return e; // further yield returns for more validation errors } 是否有可能返回在GetMoreErrors所有错误,而不必通过他们枚举? 思考这可能是一个愚蠢的问题,但我想确保我不会出错。

何时不使用收益率(return)

这个问题在这里已经有了答案: 返回一个IEnumerable的时候有没有理由不使用“yield return”? 关于yield return的好处,这里有几个有用的问题。 例如, 有人可以揭开yield关键字的神秘面纱吗? 有趣的使用C#收益 关键词 什么是yield关键字 我正在寻找什么时候不使用yield return想法。 例如,如果我期望需要返回集合中的所有项目,那么yield 似乎不会有用,对吧? 有什么情况下使用yield将是有限的,不必要的,让我陷入困境,否则应该避免?

JavaScript中的yield关键字是什么?

我在JavaScript中听说过一个“yield”关键字,但是我发现文档很差。 有人可以解释我的(或build议一个网站,解释)其用法和用途?

IEnumerable和recursion使用收益率返回

我有一个IEnumerable<T>方法用于在WebForms页面中查找控件。 该方法是recursion的,我有一些问题返回我想要的types时yield returnrecursion调用的价值。 我的代码如下所示: public static IEnumerable<Control> GetDeepControlsByType<T>(this Control control) { foreach(Control c in control.Controls) { if (c is T) { yield return c; } if(c.Controls.Count > 0) { yield return c.GetDeepControlsByType<T>(); } } } 这当前抛出一个“不能转换expression式types”的错误。 但是,如果此方法返回typesIEnumerable<Object> ,则会生成代码,但输出中将返回错误的types。 有没有一种方法使用recursion,同时也使用recursion?

通过yield / generator来理解代码stream

我已经阅读了几个使用JavaScript生成器的代码示例, 比如这个 。 我能想到的最简单的发电机组块就是这样的: function read(path) { return function (done) { fs.readFile(path, "file", done); } } co(function *() { console.log( yield read("file") ); })(); 这确实打印出file的内容,但是我的挂断是在done调用的地方。 看起来,yield是语法糖,用于包装它在callback中返回的内容,并适当地分配结果值(至less在co的情况下,将错误参数引发到callback函数中)。 我对语法的理解是否正确? 使用yield时的yield是什么?