問題タブ [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 投票する
1 に答える
120 参照

.net - オブジェクトの列挙子とは何ですか?

このコード行は私を混乱させます:

列挙子とは何ですか?列挙に接続されていますか?列挙子に関するチュートリアルを見つけようとしましたが、成功しませんでした。誰かが私にそれを説明する忍耐を持っていることを願っています。

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

flash - クラスで定義されたすべての const プロパティを一覧表示するにはどうすればよいですか

クラスで定義された public (および private / protected) const のすべての名前 (および値) を一覧表示するにはどうすればよいですか?

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

com - VB6がCOM経由でADODB列挙子を認識しない

私は、このようなADODBストリームオブジェクトを作成し、そのタイプをADODB列挙子で設定しようとするレガシーASPページをサポートしています。

これを実行するたびに、次のエラーが発生します。

ただし、このように列挙子に明示的に名前を付けると、機能します

これはサーバーのいくつかのインスタンスで実行されており、構成やファイルなどの点で理論的にはすべて同期しています。これは1つを除くすべてのサーバーで機能しますが、これを開始するために何をしたかはわかりません。これは、私たちが使用している他の少なくとも1つのライブラリで発生していることを確認できます。ここで何が起こっているのですか?ありがとう!

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

ruby - 複数の列挙子を進める方法、または「FizzBu​​zzBoozz はどうですか?」

これは、古典的なFizzBu​​zz演習を行うためのかなり非正統的な方法ですが、問題を説明するためのものです (そして、10 億まで fizzbuzz したい場合は、高速になる可能性があります)。

{3 => 'Fizz', 5 => 'Buzz', 7 => 'Boozz'} のようなハッシュを受け入れるようにこのコードを一般化する方法は?

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

c# - 誰かがこの列挙子のより良いバージョンを思い付くことができますか?

私は次の方法にかなり満足しています。それは列挙可能でソートされた互いに素な範囲のリストを取り、範囲内にないアイテムをスキップします。範囲がnullの場合、すべてのアイテムをウォークします。列挙可能な範囲と範囲のリストは両方とも大きい可能性があります。この方法を可能な限り高性能にする必要があります。

誰かがもっとエレガントなコードを思いつくことができますか?私は主にC#の実装に興味がありますが、誰かが3文字のAPL実装を持っているのであれば、それもすばらしいことです。

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

ruby - Ruby 1.8で列挙子を使用してコードを実行するには?

私はこのようなコードを持っています

そして、それは機能しません

列挙子は Ruby 1.8 で拡張機能として使用できることを理解しています。インストール方法は? (私はルビーが初めてです)

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

delphi - Delphi カスタム列挙子で奇妙なエラーが発生する

文字列解析用のカスタム列挙子を作成すると、奇妙なエラー メッセージが表示されます。レコードを使用すると、次のエラーが発生します。

E2010 互換性のない型: 'TSplitStringEnumerator' および 'Pointer'

レコードの代わりにクラス (コードにいくつかの .Create 呼び出しを挿入) を使用すると、時々内部エラーが発生します。

クラスではなくレコードデータ型で列挙を機能させる方法を知っている人はいますか?

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

haskell - Haskell 列挙子、奇妙なエラー

列挙子がどのように機能するかを理解しようとしているため、列挙子ライブラリをテストしています。デスクトップコンピューターでコンパイルできるスニペットがありますが、No instance for MonadIO. 列挙子ライブラリの使用方法がわかりませんか、ラップトップに何か問題がありますか?

そしてコード

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

delphi - 建設中のforで作成された列挙子はどのように破棄されますか?

TCollectionから派生したコレクションがあり、GetEnumeratorを実装しているため、次のような構造で使用できます。

列挙子は、Delphiが提供する標準の列挙子とまったく同じように、TObjectから派生しているため、所有者はありません。

Delphiのヘルプには、列挙子がIDisposableをサポートしている場合、それは破棄されると記載されていますが、それはもちろん.NET専用です。

私が疑問に思っていたのは、列挙子インスタンスがいつ、どのように、誰によって解放されるのかということです。

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

c# - イテレータ ブロックの引数の破棄

さて、これは悪いコードの良い部分です:

そして今、問題へのいくつかのコンテキスト:

CachingProxyListIEnumerable<T>は、カスタムの「キャッシング」列挙子を提供するの実装です。IEnumerable<T>コンストラクターを受け取り、最初はそれを列挙しますが、各項目をプライベートList<T>フィールドに保存するため、実際の解析に進む前にそれをさらに反復します (むしろときどき解析する; または、その小さな部分を照会するためだけに巨大なログを解析する必要がある)。
この最適化は実際には必要であり、そのほとんどは既に機能していることに注意してください (ステートメントを削除すると、usingファイル ハンドルのリークを除いてすべてがうまくいきます)。

Parseとの両方Tokenizeがイテレータブロックです(私の知る限り、実行を延期し、同時にコードをきれいにすることができる唯一の正気の方法です)。それらの署名はIEnumerable<Event> Parse(IEnumerable<Token>)IEnumerable<Token> Tokenize(StreamReader)です。彼らの論理は問題とは無関係です。

論理的な流れは非常に明確です。そして、コードの各部分の意図はかなり明白です。しかし、これらのusingブロックは、遅延実行全体とはうまくいきません (オブジェクトを列挙するまでに、Logオブジェクトusingは既に終了しており、ストリームは破棄されているため、Tokenizeそれから読み込もうとすると悲惨なクラッシュが発生します)。

比較的長い間、ファイル (開いているストリーム) をロックする余裕はありますが、遅かれ早かれ、ファイルを閉じる必要があります。sは実際には使用できないため、using明示的にストリームを破棄する必要があります。

問題は、呼び出しをDispose()どこに置くべきかということです。このようなシナリオに対処するための一般的なイディオムはありますか? 私はこれを「古い方法」で行いたくありません (いくつかの場所でリソースをリリースし、どこかでコードが少し変更されるたびにリリースごとにレビューしなければならない、など)。

私の最初のアイデアは、Logクラスを使い捨てにすることでした。そのため、そのコンストラクターはファイル名を取り、クラス内のすべてのリソース管理を行うことができました (Log完了時に消費者のみがそれ自体を破棄する必要があります)。しかし、作成する方法がわかりません。コンストラクターを呼び出す前にストリームを保存しますbase(ストリームは、そのコンストラクターの引数を生成する呼び出しに必要です)。

注:CachingProxyList厳密に必要でない限り、触れないでください(再利用できるように十分に一般的なものにしたいです)。特に、コンストラクターは、実装の残りの部分が大きく依存するいくつかの不変条件 (内部の列挙子オブジェクトが決して null にならないなど) を強制するために不可欠です。他のすべて、OTOHは公正なゲームでなければなりません。

これをお読みいただきありがとうございます。また、提供されたヘルプについても事前に感謝します;)