問題タブ [enumerator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
582 参照

c# - .GetType() を使用した IEnumerable 警告の複数列挙の可能性

次のコードで ReSharper の警告「IEnumerable の複数の列挙が可能です」が表示されます。

説明されている多くのスタックオーバーフロー トピック (およびhttp://confluence.jetbrains.net/display/ReSharper/Possible+multiple+enumeration+of+IEnumerable ) と同様に、ReSharper はクエリが 2 回実行されることを認識します。

私の質問は、「GetType()」ステートメントがクエリとして認識される理由です。

なにか提案を?

前もって感謝します。

0 投票する
1 に答える
746 参照

ruby - 必要な順序を確立するために ***each*** をオーバーロードするにはどうすればよいですか

これは、順序で各メソッドをオーバーロードするに投稿された質問に似ていますが、関連するすべての列挙可能なメソッドを再定義せずにサポートしたいという違いがあります。

mixin を使用して、 enumerable によって提供されるすべての関連付けられたメソッドを、それぞれを再定義せずオーバーライドするにはどうすればよいですか。例えば:

生成:

eachを再定義しても、collectが再定義されいないようです!

0 投票する
2 に答える
1885 参照

c# - なぜ C# 配列は列挙型に参照型を使用するのにリスト型を使用するのですか?可変構造体を使用しますか?

私が読んだことから、パフォーマンス上の理由から、特定のコレクションの列挙型を参照型ではなく変更可能な構造体にする設計上の決定が下されました。List.Enumerator は最もよく知られています。

配列を使用する古いコードを調査していたところ、C# 配列が参照型である汎用列挙子型として SZGenericArrayEnumerator 型を返すことを発見して驚きました。

他の非常に多くのパフォーマンスが重要なコレクションが代わりに可変構造体を使用しているときに、Array の汎用イテレータが参照型として実装された理由を誰かが知っているかどうか疑問に思っています。

0 投票する
4 に答える
9271 参照

c# - C#にReverseEnumeratorがないのはなぜですか?

C# に逆列挙子を含めないという特定の理由または設計上の決定があったかどうかは誰にもわかりませんか? reverse_iteratorEnumerator が C++ に相当するのと同じように、 C++ に相当するものがあれば、とてもいいでしょうiterator。逆に反復できるコレクションは、 IReverseEnumerable のようなものを実装するだけで、次のようなことができます。

このようにして、一方にインデクサーを使用し、もう一方に前のリンクを使用するのではなく、リストと LinkedList を同じ方法で反復処理できるため、より優れた抽象化を実現できます。

0 投票する
2 に答える
685 参照

c# - 引数としての列挙子

さて、この非常に単純なボタンクリック方法から始めましょう

すべてのアサーションが適切にパスするため、このメソッドは何もしません。冗長性を取り除く方法を導入する必要があると考えるまでは問題ありません

とはいえ、このリファクタリングは簡単です (少なくとも私にとっては)。それはプログラムを壊します!AssertNext への 2 回目の呼び出しでは、列挙子が既に開始点にリセットされ、アサーションが失敗したようです。

何が起こるか理解できません。私はこのパズルの初心者のように感じます。

ここで何が恋しいですか?

0 投票する
3 に答える
11376 参照

c# - キューを逆にする

拡張機能menthodReverse()を使用していますが、何も実行されていないようです。MSDNは、遅延実行として実装されていると述べていますが、これを機能させることができないようです。

これが私がそれを呼ぶ方法です。

これはMSDNが言うことです:

このメソッドは、遅延実行を使用して実装されます。即時戻り値は、アクションの実行に必要なすべての情報を格納するオブジェクトです。このメソッドで表されるクエリは、GetEnumeratorメソッドを直接呼び出すか、Visual C#のforeachまたはVisualBasicのForEachを使用して、オブジェクトが列挙されるまで実行されません。

GetEnumeratorを呼び出すと、それが何を意味するのかわかりません。私はそれを試してみましたが、無駄に次のことを行うだけです。

私はここでかなりばかげたことをしているような気がします、どんな助けもいただければ幸いです!

0 投票する
1 に答える
306 参照

java - Java ループ終了条件

Java でネットワーク サーバーを作成していますが、小さな問題があります。コードに話させましょう:

さて、コメントで述べたように、変数 this.Listening の値を否定/反転/変更すると、ループは停止しませんが、次の接続で終了します。

最初はサーバーを列挙子に実装しませんでした。シリアル化後にシングルトンに失敗したクラスで実装しましたが、期待どおりに実行されました。while (condition) done と do while(condition) loop を試しました。

すべての助けをいただければ幸いです。

0 投票する
1 に答える
2179 参照

delphi - GetEnumeratorによって返された列挙子を解放する必要がありますか?

DelphiXE2のジェネリックコレクションに列挙子を使用したいと思います。GetEnumerator関数によって返されるTEnumeratorを誰が所有しているのか疑問に思っています(ドキュメントに明確な答えは見つかりませんでした)。

  • 私はそれを所有していて、使用後にそれを解放する必要がありますか?
  • それともコレクションが所有していて、リリースする必要はありませんか?

コード:

0 投票する
2 に答える
442 参照

c# - 基本クラスのGetEnumeratorを使用するようにDataContractに指示するにはどうすればよいですか?

Dictionaryを実装する汎用クラスがあります。私は通常、キーを気にしないため、KeyValuePairsの代わりに値をループするカスタムGetEnumeratorを作成しました。簡単なサンプルを次に示します。

クラスにデータを追加しなかったため(メソッドのみを追加しました)、シリアル化できるようにするために、[DataMember]タグなしでクラスの先頭に[DataContract]を追加しました。これは、シリアル化/逆シリアル化に基本クラスのデータを使用するだけだと思いましたが、次のエラーが発生しました。

タイプ'Enumerator[System.String、SignalEngineeringTestPlanner.Asset]'のオブジェクトをタイプ'System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2にキャストできません

これは、DataContractSerializerが子の列挙子を呼び出しており、ペアを期待しているのにAssetオブジェクトを取得しているため、混乱していることを意味していると思います。(1)DataContractSerializerに基本クラスの列挙子を使用するように指示する方法、または(2)特別な列挙関数を作成してDataContractSerializerにその1つだけを使用するように指示する方法はありますか?

0 投票する
6 に答える
28585 参照

c# - コレクションが変更されました。列挙操作が実行されない場合があります

マルチスレッドアプリケーションがあり、このエラーが発生します

あるスレッドでコレクションを読み取り、別のスレッドでコレクションを変更するため、コレクションに問題がある可能性があります。

このコードでコレクションをロックしようとしていますが、機能しません。

その問題を解決するためのアイデアはありますか?