jjzjj

iterator

全部标签

c# - C#迭代器中的递归

是否可以在实现System.Collections.IEnumerable的迭代器中使用递归?我有一个大致如下声明的树结构:publicclassNode{publicNodeSibling;publicNodeChild;}我想遍历树中的节点。我想做这样的事情(伪代码,我想这不会编译):publicclassNodeIterator:System.Collections.IEnumerable{Nodem_root;publicSystem.Collections.IEnumeratorGetEnumerator(){recursiveYield(m_root);}System.Co

c# - 如何一次遍历两个数组?

我在解析文本文件时构建了两个数组。第一个包含列名,第二个包含当前行的值。我需要一次遍历两个列表来构建map。现在我有以下内容:varcurrentValues=currentRow.Split(separatorChar);varvalueEnumerator=currentValues.GetEnumerator();foreach(StringcolumnincolumnList){valueEnumerator.MoveNext();valueMap.Add(column,(String)valueEnumerator.Current);}这工作得很好,但它并不能完全满足我的优雅

C# 循环 : iterating through an array

如果我有如下循环:foreach(stringpassinnewstring[]{"pass1","pass2","pass3"}){x=pass;//etc}匿名字符串数组是最初创建一次,还是每次传递都重新创建一次?我相信前者,但同事们确信这是一个等待发生的错误,因为他们说foreach循环的每次迭代都会导致创建一个新的字符串数组。VS反汇编代码表明我是对的,但我想确定。我们关注这个的原因是试图理解一个神秘的错误,该错误报告在迭代时集合已被更改。 最佳答案 根据EricLippertblog和specification,forea

c# - Queue 上的 IEnumerable 迭代器是否应该使项目出列

我创建了一个实现通用IQueue接口(interface)的自定义通用队列,该接口(interface)使用System.Collections.Generic命名空间中的通用队列作为私有(private)内部队列。示例已清除不相关的代码。publicinterfaceIQueue{voidEnqueue(TQueueItemqueueItem);TQueueItemDequeue();}publicclassCustomQueue:IQueue{privatereadonlyQueuequeue=newQueue();...publicvoidEnqueue(TQueueItemqu

c# - 迭代器 block 和继承

给定一个具有以下接口(interface)的基类:publicclassBase{publicvirtualIEnumerableGetListOfStuff(){yieldreturn"First";yieldreturn"Second";yieldreturn"Third";}}我想创建一个重写方法的派生类,并添加自己的东西,如下所示:publicclassDerived:Base{publicoverrideIEnumerableGetListOfStuff(){foreach(stringsinbase.GetListOfStuff()){yieldreturns;}yield

javascript - AngularJs - 错误 : 10 $digest() iterations reached. 中止

我正在尝试使用Angular创建一个MetroTile类型的网格,为了实现这一点,我希望每个瓷砖都具有不同的颜色。所以我的行动计划是创建一个函数,它会在循环内随机选择一种颜色(使用ng-repeat)。这是我目前所拥有的......{{stockRecord.ProductGroupName}}如你所见,我正在使用名为RandomColourClass的函数设置类名,这是JS位$scope.TileColours=[{colour:'thumbnailtiletile-blue'},{colour:'thumbnailtiletile-green'},{colour:'thumbnai

javascript - 我如何交错/合并异步迭代器?

假设我有一些这样的异步可迭代对象:consta={[Symbol.asyncIterator]:asyncfunction*(){yield'a';awaitsleep(1000);yield'b';awaitsleep(2000);yield'c';},};constb={[Symbol.asyncIterator]:asyncfunction*(){awaitsleep(6000);yield'i';yield'j';awaitsleep(2000);yield'k';},};constc={[Symbol.asyncIterator]:asyncfunction*(){yield

javascript - 如何知道何时在动态 "iterable"参数中解决所有 Promises?

我的问题是我不知道如何知道动态promise数组何时解决了所有promise。举个例子:varpromiseArray=[];promiseArray.push(newPromise(){/*blablabla*/});promiseArray.push(newPromise(){/*blablabla*/});Promise.all(promiseArray).then(function(){//Thiswillbeexecutenwhenthose2promisesaresolved.});promiseArray.push(newPromise(){/*blablabla*/})

javascript - ES6 做 for of get prototype values - 如何检查 hasownproperty

使用for...in我总是检查hasOwnProperty(我想这是使用Object.keys的一个很好的论据),例如:for(letainobj){if(obj.hasOwnProperty(a)){//logic}}当我使用for...of时是否需要做同样的检查?如果需要,我应该怎么做?根据MDNpageonfor...ofWhilefor...initeratesoverpropertynames,for...ofiteratesoverpropertyvalues但是它没有说明该迭代是包含继承属性还是仅包含实例属性。那里给出的解释和示例代码仅涉及实例属性。

javascript - ES6中如何使用解构赋值定义枚举?

您可以使用解构赋值在ES6中定义枚举,如下所示:var[red,green,blue]=[0,1,2];相反,我希望解构赋值的右侧是动态的。例如:varMAX_ENUM_SIZE=32;varENUM=newArray(MAX_ENUM_SIZE);for(vari=0;i不幸的是,这看起来像是一个hack。如果将来我想要更大的枚举怎么办?因此,我正在考虑将解构赋值与迭代器一起使用,如下所示:var[red,green,blue]=enumeration(/*Idon'twanttospecifysize*/);但是,我认为不可能将解构赋值与迭代器一起使用[需要引用]。有什么办法可以实