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

yieldは、(1)ジェネレーター関数の作成を容易にするキーワード、(2)あるコルーチンから別のコルーチンに制御を移すRubyステートメント、(3)スイッチ式から値を生成するために使用されるJavaステートメントです。

5
C#で、無名メソッドにyieldステートメントを含めることができないのはなぜですか?
私はこのようなことをするのが良いだろうと思いました(ラムダが利回りを返すことで): public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new() { IList<T> list = GetList<T>(); var fun = expression.Compile(); var items = () => { foreach (var item in list) if (fun.Invoke(item)) yield return item; // This is not allowed by C# } return items.ToList(); } しかし、無名メソッドでは利回りを使用できないことがわかりました。なぜだろう。歩留まりのドキュメントは、それが許可されていないと言います。 許可されなかったので、リストを作成して項目を追加しただけです。

4
歩留まりを使用した再帰
再帰とyieldステートメントを組み合わせる方法はありますか?たとえば、(再帰を使用する)無限数ジェネレータは次のようになります。 def infinity(start): yield start # recursion here ... >>> it = infinity(1) >>> next(it) 1 >>> next(it) 2 私は試した: def infinity(start): yield start infinity(start + 1) そして def infinity(start): yield start yield infinity(start + 1) しかし、それらのどれも私が望むことをしませんでした、最初のものはそれが降伏した後に停止startし、2番目のものは降伏しstart、次にジェネレーターそしてそれから停止しました。 注: whileループを使用してこれを実行できることを知っています。 def infinity(start): while True: yield start start += 1 これを再帰的に実行できるかどうかを知りたいだけです。

5
ジェネレーターを呼び出す関数から戻るか、それとも譲りますか?
私はジェネレーターgeneratorとそれに便利なメソッドを持っています- generate_all。 def generator(some_list): for i in some_list: yield do_something(i) def generate_all(): some_list = get_the_list() return generator(some_list) # <-- Is this supposed to be return or yield? すべきgenerate_all returnかyield?私は両方の方法のユーザーにそれを同じように使用して欲しい、すなわち for x in generate_all() 等しいはずです some_list = get_the_list() for x in generate(some_list)

2
PHP:「return」、「yield」、「yield from」の違いと、同じ関数でyieldとreturnの両方を混合することの違いは何ですか?
違いreturnとyield、私はそこに考え出しまでクリアな見えたでもあったyield fromとの両方を組み合わせることが可能returnとyield全く同じ機能で! 私の理解returnは、その後のすべてが実行されなかったということでしたね? しかしながら: function generate(): iterable { return [1, 2, 3]; } foreach (generate() as $value) { echo $value; } プロデュース: "123" しかし、以下: function generate(): iterable { return [1, 2, 3]; yield; } foreach (generate() as $value) { echo $value; } 何も生産しない!つまり、利回りが実行されるということですか? これはバグですか?
10 php  return  generator  yield 

3
再帰的手続き内の「yield」
いくつかの変数の範囲を表すPythonリストがあるとします。 conditions = [['i', (1, 5)], ['j', (1, 2)]] これは、変数のi範囲が1〜5で、ループ変数のj範囲が1〜2であることを表しています。可能な組み合わせごとに辞書が必要です。 {'i': 1, 'j': 1} {'i': 1, 'j': 2} {'i': 2, 'j': 1} {'i': 2, 'j': 2} {'i': 3, 'j': 1} {'i': 3, 'j': 2} {'i': 4, 'j': 1} {'i': 4, 'j': 2} {'i': 5, 'j': 1} {'i': 5, 'j': 2} …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.