問題タブ [yield]

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 投票する
14 に答える
4887 参照

c# - yield は LINQ 以外でも役に立ちますか?

yield キーワードを使用できると思うときはいつでも、一歩下がって、それが自分のプロジェクトにどのように影響するかを調べます。yielding メソッドの状態を維持するためのオーバーヘッドがあまり得にならないと感じているので、私は常に yielding ではなくコレクションを返すことになります。コレクションを返すほとんどすべてのケースで、90% の確率で、呼び出し元のメソッドがコレクション内のすべての要素を反復処理するか、コレクション全体で一連の要素を探していると感じています。

linq での有用性は理解していますが、yield が有用な複雑なクエリ可能なオブジェクトを作成しているのは linq チームだけだと思います。

yield が便利な linq のようなものやそうでないものを書いた人はいますか?

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

c# - キャッチ付きのtryブロック内にyieldreturnが表示されないのはなぜですか?

以下は大丈夫です:

ブロックは、すべてのfinally実行が終了したときに実行されます(列挙が終了する前に破棄された場合でも、これを保証する方法を提供するためのIEnumerator<T>サポート)。IDisposable

しかし、これは大丈夫ではありません:

(引数のために)tryブロック内のいずれかのWriteLine呼び出しによって例外がスローされたと仮定します。catchブロックで実行を継続することの問題は何ですか?

もちろん、yield return部分は(現在)何もスローできませんが、なぜそれが、前後にスローされた例外を処理するためにtry/を囲むことを停止する必要がありますか?catchyield return

更新:ここにEricLippertからの興味深いコメントがあります-try / finalの動作を正しく実装するのにすでに十分な問題があるようです!

編集:このエラーに関するMSDNページは次のとおりです:http://msdn.microsoft.com/en-us/library/cs1x15az.aspx。ただし、その理由は説明されていません。

0 投票する
10 に答える
2006 参照

c# - イールド キーワードの付加価値

実際の状況で「yield」キーワードを使用する場所をまだ見つけようとしています。

私はこの件に関するこのスレッドを見ます

C#で使用されるyieldキーワードは何ですか?

しかし、受け入れられた回答では、誰かが Integers() を反復している例としてこれを持っています

しかし、なぜ使用しないのですか

代わりにここに。より簡単なようです..

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

.net - ジェネレータを使用してツリー構造を反復する方法は?

すべての子孫の葉 (直接または間接) を返すツリー ノードに関数を実装する方法を理解しようとしています。ただし、リーフノードが再帰的に配置されるコンテナーを渡したくありません (ツリーが巨大になる可能性があります)。代わりに、ジェネレーターを使用してツリーを反復処理したいと考えています。いくつかのアプローチを試しましたが、これまでのところどれもうまくいきませんでした。これは、私が考えられる解決策に最も近いものです:

しかし、これも機能していません。私は何を間違っていますか?同じ関数にyieldステートメントがある場合、.EnumerateLeavesを再帰的に呼び出すことはできません。

どんな助けでも大歓迎です。前もって感謝します。

編集:ブランチは葉または枝のいずれかを子として持つことができるため、再帰があることを忘れていました。

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

vb.net - CCR、イールド、VB.net

私は、CCR (Concurrency And Coordination Runtime) について頭を悩ませ、学ぶ価値があるかどうかを確認しようとしています。

私は主に Vb.net でプログラミングを行っており、CCR を使用するほとんどの例では Yield キーワードを使用しています。

CCR を使用する上で、Yield はどの程度重要ですか? 回避策はありますか? VB.net は Yield コマンドを取得しますか? (そうでない場合、なぜそうしないのですか?)

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

c# - イールドメソッドでのガベージコレクション

私がこのような方法を持っているとしましょう(Jon Skeetによる以前のSO回答から盗まれました):

このメソッドでは、表示されたキーを保持するために使用されるHashSetがあります。このような方法でこの方法を使用するとします。

これは、文字列リストの最初の2つの項目のみを列挙します。しかし、ガベージコレクションはどのようにしてseenKeysハッシュセットを収集しますか。イールドはメソッドの実行を一時停止するだけなので、メソッドが高価な場合、どうすれば適切に処理できるかを確認できますか?

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

c# - イールドブレークの用途は何ですか?

重複の可能性:
「利回りが壊れる」とは何ですか?C#で行う?

「ブレーク」または「リターン」を使用することによって他の方法では達成できなかった「利回りブレーク」ステートメントの使用法を誰でも見ることができますか。

この発言はどう見ても無理がある。さらに、このステートメントがなければ、"yield return X" ステートメントは "yield X" に単純化でき、はるかに読みやすくなります。

私は何が欠けていますか?

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

c# - 利回りリターンの過負荷使用

yield キーワードを使用した経験はあまりありません。型変換用にこれらの IEnumerable<T> 拡張機能があります。

私の質問は、最初のオーバーロードされたメソッドには、2 番目のメソッドから得られるのと同じ利回りの戻り値があるかどうかです。

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

c# - 生成されたIEnumerableをPagedListで機能させるにはどうすればよいですか。

プロジェクトでTroyGoodeのページリストを使用しています。
通常は、IEnumerable、startindex、およびitem countをフィードするだけで、すべて機能します。
ただし、次のように生成したIEnumerableをフィードしようとしています。

--EDIT-- pagedListは機能しますが、ページングされたオブジェクトだけでなく、すべてのMyColorオブジェクトのyieldを要求します。このコース外では、PagedListの使用全​​体が無効になり、大量の列挙が発生する可能性があります。

--EDIT--
必要だと思うのは、Count()を実装して、ColorService.GetColor()を使用してすべてのオブジェクトを作成し、そのリストをカウントする代わりに、ids.Distinct(int)からカウントを返すようにする方法です。 。