Tag: foreach

expression式与foreach在斯卡拉

我正在通过Scala中的编程工作,虽然我很想从Python的angular度来看待事物,但是我不想编写“Scala中的Python”。 就控制stream程而言,我不太确定该怎么做:在Python中,我们使用for x in some_iterable去死,我们喜欢它。 在Odersky调用for expression式的 Scala中存在一个非常类似的构造,可能将它与Java for循环区分开来。 另外,对于可迭代数据types,Scala还有一个foreach属性(我想这将是一个属性,我不太了解Scala的名称)。 不过,似乎我不能使用foreach来为容器中的每个项目调用一个函数。 这让我有几个问题。 首先,对于在Scala中重要/重要的expression式,就像它们在Python中一样,第二,何时应该使用foreach而不是forexpression式(除了在容器的每个项目上调用函数的明显情况)? 我希望自己不是非常模棱两可,但是我只是想在Scala中devise一些devise/语言基础知识(目前看起来非常酷)。

LINQ + Foreach vs Foreach + If

我需要迭代对象列表,只对布尔属性设置为true的对象执行某些操作。 我在这个代码之间辩论 foreach (RouteParameter parameter in parameters.Where(p => p.Condition)) { //do something } 和这个代码 foreach (RouteParameter parameter in parameters) { if !parameter.Condition continue; //do something } 第一个代码显然更清晰,但我怀疑它会遍历列表两次 – 一次是查询,一次是foreach。 这不会是一个巨大的名单,所以我不是过度关心性能,但循环两次的想法只是错误的我。 问:有没有干净/漂亮的方式来写这个没有循环两次?

在foreach循环内部或外部声明一个variables:哪个更快/更好?

哪一个是更快/更好的? 这个: List<User> list = new List<User>(); User u; foreach (string s in l) { u = new User(); u.Name = s; list.Add(u); } 或者这个: List<User> list = new List<User>(); foreach (string s in l) { User u = new User(); u.Name = s; list.Add(u); } 我的新手发展技能告诉我,第一个更好,但我的一个朋友告诉我,我错了,但不能给我一个很好的理由,为什么第二个更好。 性能是否有所不同?

如何检查variables是否是数组?

我想用一个variables的foreach循环,但这个variables可以是许多不同的types,例如NULL 。 所以在foreach之前我testing一下: if(is_array($var)){ foreach($var as … 但是我意识到它也可以是一个实现Iterator接口的类。 也许我是盲目的,但如何检查类是否实现接口? 有没有像is_a函数或inherits运算符? 我发现class_implements ,我可以使用它,但也许有一些更简单的? 其次,更重要的是,我想这个函数存在,足以检查variablesis_array或“实现Iterator接口”还是应该testing更多的东西?

在C#中枚举的同时从List <T>中移除项目的智能方法

我有一个经典的案例,试图从一个集合中删除一个项目,同时在一个循环中枚举它: List<int> myIntCollection = new List<int>(); myIntCollection.Add(42); myIntCollection.Add(12); myIntCollection.Add(96); myIntCollection.Add(25); foreach (int i in myIntCollection) { if (i == 42) myIntCollection.Remove(96); // The error is here. if (i == 25) myIntCollection.Remove(42); // The error is here. } 在更改发生后的迭代开始时,会抛出InvalidOperationException ,因为枚举器不会在底层集合更改时不喜欢。 我需要在迭代过程中对集合进行更改。 有许多模式可以用来避免这种情况 ,但似乎没有一个好的解决scheme: 不要在这个循环中删除,而应该在主循环之后保留一个单独的“删除列表”。 这通常是一个很好的解决scheme,但在我的情况下,我需要项目立即消失,因为“等待”,直到主循环之后真正删除项目会改变我的代码的逻辑stream程。 而不是删除项目,只需在项目上设置一个标志,并将其标记为不活动。 然后添加模式1的function来清理列表。 这可以满足我所有的需求,但是这意味着很多代码将不得不改变,以便每次访问一个项目时检查非激活标志。 这是太多的pipe理,我喜欢。 以某种方式将模式2的思想融入从List<T>派生的类中。 这个超级列表将处理非活动标志,在事实之后删除对象,并且也不会将枚举消费者标记为不活动的项目。 基本上,它只是封装了模式2的所有想法(以及随后的模式1)。 这样的课是否存在? 有没有人有这个代码? 或者,还有更好的方法? 我被告知访问myIntCollection.ToArray()而不是myIntCollection将解决问题,并允许我在循环内部删除。 […]

在perl中的foreach循环中自动获取循环索引

如果我在Perl中有以下数组: @x = qw(abc); 我用foreach迭代它,然后$_将引用数组中的当前元素 : foreach (@x) { print; } 将打印: abc 有没有类似的方式来获取当前元素的索引 ,而不需要手动更新计数器? 诸如: foreach (@x) { print $index; } 其中$index像$_一样更新以产生输出: 012

如何跳出C#中的foreach循环?

如果其中一个元素满足要求,我如何摆脱C#中的foreach循环? 例如: foreach(string s in sList){ if(s.equals("ok")){ //jump foreach loop and return true } //no item equals to "ok" then return false }

Java:冒号(:)运算符是做什么的?

我会自己去看,但是我甚至不知道它叫什么。 有人会介意解释它做什么? 我不知道有多less次出现。 它在这种情况下在这里做什么: public String toString() { String cardString = ""; for (PlayingCard c : this.list) // <– { cardString = cardString + c + "\n"; } 你将如何for-each循环写一个不同的方式,以便不包含“:”?

如何使用LINQ将List <string>中的所有string转换为小写?

我昨天在StackOverflow的一个响应中看到了一个代码片断,这让我很感兴趣。 这是这样的: List<string> myList = new List<string> {"aBc", "HELLO", "GoodBye"}; myList.ForEach(d=>d.ToLower()); 我希望我可以用它来将myList中的所有项目转换为小写。 然而,这不会发生…运行后,myList中的套pipe是不变的。 所以我的问题是,是否有一种方法,使用LINQ和Lambdaexpression式轻松地遍历和修改列表的内容以类似于此的方式。 谢谢,马克斯

为什么nodelist没有forEach?

我正在编写一个简短的脚本来更改<abbr>元素的内部文本,但发现nodelist没有forEach方法。 我知道nodelist不是从Arrayinheritance的,但是看起来不像forEach会是一个有用的方法呢? 有没有一个特定的实现问题,我不知道,防止添加forEach nodelist ? 注意:我知道Dojo和jQuery都以某种forms为每个节点列表提供了forEach 。 由于限制,我不能使用。