タグ付けされた質問 「foreach」

foreachは、リスト/コレクション/配列の各要素に対して特定のコードを実行するループ構造です。forループとは対照的に、foreachループでは、コーダーがカウンター変数を維持してオフバイワン(フェンスポスト)バグを回避する必要はありません。配列/リスト/コレクション全体の単純な反復が必要な場合に使用することをお勧めします。

8
javascript forEachメソッドにはどのような用途がありますか(そのマップではできません)?
mapとforeachで見られる唯一の違いmapは、配列を返すことと返さforEachないことです。ただし、forEachメソッド " func.call(scope, this[i], i, this);"の最後の行もわかりません。たとえば、「this」と「scope」は同じオブジェクトthis[i]をi参照しておらず、ループ内の現在の値を参照していないのですか? 別の投稿で誰かが「forEachリストの各要素に基づいて何かを実行したいときに使用します。たとえば、ページに何かを追加している可能性があります。基本的には、「副作用」が欲しいときに最適です。副作用の意味がわかりません。 Array.prototype.map = function(fnc) { var a = new Array(this.length); for (var i = 0; i < this.length; i++) { a[i] = fnc(this[i]); } return a; } Array.prototype.forEach = function(func, scope) { scope = scope || this; for (var i = 0, l = …

6
変数が配列かどうかを確認するにはどうすればよいですか?…または配列のようなもの
foreach変数でループを使用したいのですが、この変数はNULL、たとえば、さまざまなタイプにすることができます。 foreachテストする前に: if(is_array($var)){ foreach($var as ... しかし、それはIteratorインターフェースを実装するクラスにもなり得ることに気づきました。多分私は盲目ですが、クラスがインターフェイスを実装しているかどうかを確認するにはどうすればよいですか?is_a関数やinherits演算子のようなものはありますか?見つけましたclass_implements、それを使用できますが、もっと簡単なものがあるのでしょうか? 次に、より重要なことですが、この関数は存在すると思います。変数is_arrayまたは「Iteratorインターフェースを実装する」かどうかを確認するには十分でしょうか、それとも何かテストする必要がありますか?
90 php  arrays  foreach 

4
List <T> .ForEachでリストを変更できるのはなぜですか?
私が使用する場合: var strings = new List&lt;string&gt; { "sample" }; foreach (string s in strings) { Console.WriteLine(s); strings.Add(s + "!"); } Add中には、foreach私たちは私たちの足の下から敷物を引いているので、私は、論理的な検討している、;(列挙操作が実行されない可能性コレクションが変更された)と、InvalidOperationExceptionがスローされます。 ただし、私が使用する場合: var strings = new List&lt;string&gt; { "sample" }; strings.ForEach(s =&gt; { Console.WriteLine(s); strings.Add(s + "!"); }); OutOfMemoryExceptionがスローされるまでループすることで、すぐに足を撃ちます。 List.ForEachは単なるforeachまたはのラッパーであるといつも思っていたので、これは私にとって驚きですfor。 この動作の方法と理由について誰かが説明していますか? (ジェネリックリストのForEachループによって無限に繰り返されます)
90 c#  list  foreach 


3
これはC ++ 11 forループの既知の落とし穴ですか?
いくつかのメンバー関数で3つのdoubleを保持するための構造体があるとします。 struct Vector { double x, y, z; // ... Vector &amp;negate() { x = -x; y = -y; z = -z; return *this; } Vector &amp;normalize() { double s = 1./sqrt(x*x+y*y+z*z); x *= s; y *= s; z *= s; return *this; } // ... }; これは簡単にするために少し工夫されていますが、同様のコードがそこにあることに同意するはずです。これらのメソッドを使用すると、便利なチェーンを作成できます。次に例を示します。 Vector v …

5
C#でforeachループを終了するにはどうすればよいですか?
foreach (var name in parent.names) { if name.lastname == null) { Violated = true; this.message = "lastname reqd"; } if (!Violated) { Violated = !(name.firstname == null) ? false : true; if (ruleViolated) this.message = "firstname reqd"; } } 違反が真実であるときはいつでも、私はforeachすぐにループから抜け出したいです。どうすればいいのですか?
88 c#  foreach 

10
C#で列挙しながらリスト<T>からアイテムを削除するインテリジェントな方法
ループで列挙しながらコレクションからアイテムを削除しようとする典型的なケースがあります。 List&lt;int&gt; myIntCollection = new List&lt;int&gt;(); 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時に、基になるコレクションがいつ変更されるかを列挙子が気に入らないため、がスローされます。 繰り返しながらコレクションに変更を加える必要があります。これを回避するために使用できるパターンはたくさんありますが、どれも良い解決策を持っていないようです。 このループ内で削除しないでください。代わりに、メインループの後に処理する別の「リストの削除」を保持してください。 これは通常は良い解決策ですが、私の場合、アイテムを実際に削除するためのメインループがコードのロジックフローを変更するまで、アイテムを「待機中」として即座に削除する必要があります。 アイテムを削除する代わりに、アイテムにフラグを設定し、非アクティブとしてマークするだけです。次に、パターン1の機能を追加して、リストをクリーンアップします。 これは私のすべてのニーズに対応しますが、アイテムにアクセスするたびに非アクティブフラグをチェックするために、多くのコードを変更する必要があることを意味します。これは私の好みにはあまりにも多くの管理です。 どういうわけか、から派生したクラスにパターン2のアイデアを組み込みList&lt;T&gt;ます。このスーパーリストは、非アクティブフラグ、事後のオブジェクトの削除を処理し、非アクティブとしてマークされたアイテムを列挙型コンシューマーに公開しません。基本的には、パターン2(およびその後のパターン1)のすべてのアイデアをカプセル化するだけです。 このようなクラスは存在しますか?誰かがこれのためのコードを持っていますか?それとももっと良い方法はありますか? myIntCollection.ToArray()代わりにアクセスmyIntCollectionすると問題が解決し、ループ内で削除できるようになると言われています。 これは私には悪いデザインパターンのように思えますか、それとも問題ないのでしょうか? 詳細: リストには多くのアイテムが含まれ、そのうちのいくつかのみを削除します。 ループ内では、追加、削除など、あらゆる種類のプロセスを実行するため、ソリューションはかなり一般的である必要があります。 …
87 c#  list  foreach  enumeration 

6
プレーン配列の範囲ベースの作業はどのように行われますか?
C ++ 11では、他の言語のforように機能する範囲ベースを使用できますforeach。プレーンなC配列でも機能します。 int numbers[] = { 1, 2, 3, 4, 5 }; for (int&amp; n : numbers) { n *= 2; } いつ停止するかをどうやって知るのですか?forが使用されているのと同じスコープで宣言されている静的配列でのみ機能しますか?これforを動的配列でどのように使用しますか?
87 c++  arrays  foreach  c++11 

7
foreachループはC#でどのように機能しますか?[閉まっている]
クローズ。この質問はもっと焦点を合わせる必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てるようにします。 5か月前に閉鎖されました。 この質問を改善する どのタイプのクラスがforeachループを使用できますか?
86 c#  foreach 

3
Java8ストリームでのforEachとforEachOrdered
これらのメソッドは実行順序が異なることを理解していますが、すべてのテストで異なる順序の実行を実現することはできません。 例: System.out.println("forEach Demo"); Stream.of("AAA","BBB","CCC").forEach(s-&gt;System.out.println("Output:"+s)); System.out.println("forEachOrdered Demo"); Stream.of("AAA","BBB","CCC").forEachOrdered(s-&gt;System.out.println("Output:"+s)); 出力: forEach Demo Output:AAA Output:BBB Output:CCC forEachOrdered Demo Output:AAA Output:BBB Output:CCC 2つの方法で異なる出力が生成される場合の例を提供してください。

6
各ループのC#はList <T>をどのような順序で繰り返しますか?
C#のforeachループがSystem.Collections.Generic.List&lt;T&gt;オブジェクトをループする順序について疑問に思っていました。 同じトピックについて別の質問を見つけましたが、それが私の質問に満足のいく答えになるとは感じていません。 誰かが順序が定義されていないと述べています。しかし、他の誰かが述べているように、配列をトラバースする順序は固定されています(0から長さ-1まで)。8.8.4foreachステートメント 順序のある標準クラスにも同じことが当てはまるとも言われています(例List&lt;T&gt;)。それをバックアップするためのドキュメントが見つかりません。ですから、今はそのように機能するかもしれませんが、次の.NETバージョンでは異なる可能性があります(可能性は低いかもしれませんが)。 私もList(t).Enumerator運が悪かったのでドキュメントを見ました。 別の関連する質問は、Javaの場合、ドキュメントに具体的に記載されていると述べています。 List.iterator()このリストの要素に対して適切な順序でイテレータを返します。」 私はC#のドキュメントでそのようなものを探しています。 前もって感謝します。 編集:すべての回答をありがとうございました(私が非常に多くの返信を受け取ったのは驚くべきことです)。すべての回答から私が理解しているのは、List&lt;T&gt;常にインデックスの順序で繰り返されるということです。しかし、のJavaドキュメントListと同様に、これを示すドキュメントの明確な平和を望んでいます。


3
Terraform 0.12でリスト(オブジェクト)をfor_eachする方法
質問があります。GCPコンピューティングインスタンスのリストをデプロイする必要があります。このように、このオブジェクトリストの「vms」をfor_eachでループするにはどうすればよいですか。 "gcp_zone": "us-central1-a", "image_name": "centos-cloud/centos-7", "vms": [ { "hostname": "test1-srfe", "cpu": 1, "ram": 4, "hdd": 15, "log_drive": 300, "template": "Template-New", "service_types": [ "sql", "db01", "db02" ] }, { "hostname": "test1-second", "cpu": 1, "ram": 4, "hdd": 15, "template": "APPs-Template", "service_types": [ "configs" ] } ] }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.