Tag: foreach

Node.js:对于每个…在不工作

我想用Node.js(v0.4.11)中的for each … in 我这样使用它: var conf = { index: { path: { first: "index.html", pattern: "index/{num}.html" }, template: "index.tpl", limit: 8 }, feed: { path: "feed.xml", template: "atom.tpl", limit: 8 } } for each (var index in conf) { console.log(index.path); } 我得到以下错误: for each (var index in conf) { ^^^^ node.js:134 throw e; // […]

如何检查一个variables是否是某种IEnumerable

基本上我正在build立一个非常通用的T4模板,我需要做的事情之一是打印variable.ToString() 。 但是,我希望它评估列表和foreach通过他们,而不是打印ListItem.ToString()我的T4模板不知道什么types的variable会提前,这就是为什么这是通用的。 但是我生成的当前代码如下所示: if(variable!=null) if(variable is IEnumerable) //error here foreach(var item in variable) Write(item.ToString()); 我得到一个编译器错误标记为“使用genericstypesSystem.Generic.Collections.IEnumerable需要一个types参数” 实际上我并不关心它是什么types的,我只是想知道你是否可以通过variables进行foreach。 我应该使用什么代码?

.NET – 从“foreach”循环中的列表<T>中删除

我有我想要看起来像这样的代码: List<Type> Os; … foreach (Type o in Os) if (o.cond) return; // Quitting early is important for my case! else Os.Remove(o); … // Other code 这是行不通的,因为当你在这个列表的foreach循环中时,你不能从列表中删除: 有没有一种常见的方法来解决这个问题? 如果需要,我可以切换到不同的types。 选项2: List<Type> Os; … while (Os.Count != 0) if (Os[0].cond) return; else Os.RemoveAt(0); … // Other code 丑,但它应该工作。

为什么要在java中的for-each循环内声明所需的variables

每个循环的通常forms是这样的: for(Foo bar: bars){ bar.doThings(); } 但是,如果我想保留直到循环后,我不能使用每个循环: Foo bar = null; // – Syntax error on token "bar", Identifier expected after this token for(bar: bars){ if(bar.condition()) break; } bar.doThings(); for循环获得上面提到的语法错误。 为什么是这样? 我对解决方法不感兴趣,只是对这个限制背后的考虑感到好奇。 相反,使用普通的for循环,variables可以在外部声明或者根本不声明… int i = 1; for(;i<max;i++){ for(;;){ // Do things } }

是否自动调用Dispose?

在C#中,foreach是否自动调用Dispose实现IDisposable的任何对象? http://msdn.microsoft.com/en-us/library/aa664754(v=vs.71).aspx似乎表明它确实: *否则,集合expression式是实现System.IEnumerable的types,并且foreach语句的扩展是:Copy IEnumerator enumerator = ((System.Collections.IEnumerable)(collection)).GetEnumerator(); try { while (enumerator.MoveNext()) { ElementType element = (ElementType)enumerator.Current; statement; } } finally { IDisposable disposable = enumerator as System.IDisposable; if (disposable != null) disposable.Dispose(); }

在foreach循环中取消设置数组值

我有一个foreach循环设置通过我的数组,检查某个链接,如果它发现它从数组中删除该链接。 我的代码: foreach($images as $image) { if($image == '../../../160wpb4.gif' || $image == 'http://img3.abload.de/img/10nx2340fhco.gif' || $image == '../../../160wpb4.gif') { unset($images[$image]); } } 但是它不会删除数组。 这可能与$images[$image] ,因为这不是数组input的关键,只是内容? 有没有办法做到这一点,没有纳入柜台? 谢谢。 编辑:谢谢你们,但现在我有另一个问题,其中数组条目实际上并没有被删除。 我的新代码: foreach($images[1] as $key => $image) { if($image == '../../../160wpb4.gif') $image == 'http://img3.abload.de/img/10nx2340fhco.gif' || $image == '../../../160wpb4.gif') { unset($images[$key]); } } $图像现在是一个二维数组,因此我需要$ images [1]。 我已经检查,它成功地绕过了数组元素,一些元素实际上有一些我想要删除的URL,但是它们并没有被删除。 这是我的$images数组: Array ( […]

foreach + break vs linq FirstOrDefault性能差异

我有两个类执行date范围数据提取特定的日子。 public class IterationLookup<TItem> { private IList<Item> items = null; public IterationLookup(IEnumerable<TItem> items, Func<TItem, TKey> keySelector) { this.items = items.OrderByDescending(keySelector).ToList(); } public TItem GetItem(DateTime day) { foreach(TItem i in this.items) { if (i.IsWithinRange(day)) { return i; } } return null; } } public class LinqLookup<TItem> { private IList<Item> items = null; public IterationLookup(IEnumerable<TItem> items, Func<TItem, […]

C ++ 11基于范围的for循环条件是否在每个周期被评估?

for(auto& entity : memoryManager.getItems()) entity->update(mFrameTime); 如果memoryManager包含1000个项目, memoryManager.getItems()会被调用1000次,或者只有一个在循环的开始? 编译器是否使用-O2(或-O3)运行任何优化? ( memoryManager.getItems()返回一个std::vector<Entity*>& )

识别每个使用的最后一个循环

在对对象执行“foreach”时,我想要做一些与上一次循环迭代不同的事情。 我正在使用Ruby,但同样适用于C#,Java等 list = ['A','B','C'] list.each{|i| puts "Looping: "+i # if not last loop iteration puts "Last one: "+i # if last loop iteration } 所需的输出等同于: Looping: 'A' Looping: 'B' Last one: 'C' 显而易见的解决方法是将代码迁移到一个for循环使用'for i in 1..list.length' ,但每个解决scheme感觉更优雅。 在循环中编写特殊情况的最优雅的方法是什么? 这可以用foreach来完成吗?

在foreach循环中检查null

有没有更好的方法来做到以下几点: 在继续循环之前,我需要在file.Headers上检查null if (file.Headers != null) { foreach (var h in file.Headers) { //set lots of properties & some other stuff } } 简而言之,如果由于我的代码中发生的缩进级别,在if中写入foreach看起来有点难看。 是会评估的东西 foreach(var h in (file.Headers != null)) { //do stuff } 可能?