問題タブ [yield-keyword]
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.
python - Pythonのyieldgenerator関数
だから私はこの巨大な巨大なクラスを持っています、その中で唯一の関連するコードは:
...そして私はcsvファイルからdictにいくつかの値をロードしました。
問題は、列のすべての値が数値であっても、csvDictReaderCol.get_col_is_numeric('Ann_payrll')がNoneを返すことです。なぜyieldがNone値を生成するのですか?
c# - Enumerable.First()を呼び出すと、列挙型の最初の項目のコピーが返されるように見えるのはなぜですか
えーと、これをどう表現するかはよくわかりませんが..
クラスの3つのインスタンスを含むyieldreturnを使用して作成されたIEnumerableがある場合、.First()を呼び出すと最初のインスタンスの「コピー」が返されるように見えるのはなぜですか?
次のコードを参照してください。
これを実行すると、次の出力が生成されます。
しかし、IListとIEnmerableは同じように動作し、次のように出力されると思います...
何が足りないの?
scala - Scalaでのyieldを使用した戻りと反復可能なコレクション
ScalaにDateTimeクラスとTimeSpanクラスがあります(<演算子と+演算子が正常に機能すると仮定します)。開始/停止時間とステッピングのタイムスパンをとる「範囲」関数を定義しようとしています。C#では、これをyieldで実行しますが、Scalaでも同じことができるはずです...奇妙なエラーが発生する場合を除きます。
'yield t'行に、「Illegalstartofstatement」が表示されます。
このコードを見て、私は2つのことに興味があります:1)私は何を間違えましたか?2)記述されたコードは非常に必須です(var tなどを使用します)。適度に高速なScalaでこれを行うためのより機能的な方法は何ですか?
ありがとう!
c# - 「yieldkeyword」はイテレータブロックの外で役に立ちますか?
yield
キーワードのドキュメントには次のように書かれています。
yieldキーワードは、それが表示されるメソッドがイテレーターブロックであることをコンパイラーに通知します。
yield
イテレータブロックの外側でキーワードを使用しているコードに遭遇しました。これはプログラミングの間違いと見なす必要がありますか、それとも問題ありませんか?
編集申し訳ありませんが私のコードを投稿するのを忘れました:
ありがとう。
c# - 「yield」キーワードは構文糖ですか? その実装は何ですか
重複の可能性:
yield ステートメントの実装
私はmsdnのドキュメントを見てきましたが、次のように書かれています:
yield キーワードは、それが現れるメソッドが反復子ブロックであることをコンパイラに通知します。コンパイラは、反復子ブロックで表現される動作を実装するクラスを生成します。iterator ブロックでは、yield キーワードを return キーワードと共に使用して、列挙子オブジェクトに値を提供します。
つまり、yield
キーワードはシンタックス シュガーであり、コンパイラは Iterator を生成するという大変な作業を行います。(私は正しいですか?)
では、このシンタックス シュガーに対して生成された実装コードは何でしょうか。
c# - 利回りを書く別の方法
次の設定でを取り除く方法はありますか.FirstOrDefault()
。私は yield ステートメントを使用するのが大好きですが、IsRequired メソッドを使用する必要がないところまで凝縮したいと考えています.FirstOrDefault()
。
PlayerValidator
バリデータヘルパー
c++ - C ++の「yield」キーワード、関数からイテレータを返す方法は?
次のコードを検討してください。
リターンバリュー最適化(RVO)が発生することを期待できるかどうかを考えていたときに、JerryCoffin [強調鉱山]によるこの回答を見つけました。
少なくともIMOは、通常は悪い考えですが、効率上の理由からではありません。問題の関数は通常、イテレータを介して出力を生成する汎用アルゴリズムとして記述される必要があるため、これはお勧めできません。イテレータを操作する代わりにコンテナを受け入れるか返すほとんどすべてのコードは、疑わしいと見なされます。
誤解しないでください。コレクションのようなオブジェクト(文字列など)を渡すのが理にかなっている場合もありますが、引用した例では、ベクトルを渡すか返すのはお勧めできません。
Pythonのバックグラウンドを持っているので、ジェネレーターがとても好きです。実際、Pythonの場合、上記の関数をジェネレーターとして記述します。つまり、他の何かが発生する前にデータ全体を処理する必要がないようにします。たとえば、次のようになります。
私がジェリー・コフィンズのメモを正しく解釈した場合、これは彼が提案したことですよね?もしそうなら、どうすればこれをC ++で実装できますか?
scala - Scala - 'for-yield' 句は、条件によっては何も得られませんか?
Scala 言語で、指定された範囲内で奇数を生成する関数を作成したいと考えています。この関数は、偶数を反復するときにログを出力します。関数の最初のバージョンは次のとおりです。
ログの出力を省略した場合、実装は非常に単純になります。
ただし、ロギングの部分は見逃したくありません。最初のバージョンをよりコンパクトに書き直すにはどうすればよいですか? 次のように書き換えることができれば素晴らしいことです。
python - Python-ジェネレーターの送信機能を理解する
私はPythonで勉強していますが、それはジェネレーターが戻り値を出力する方法であるだけでなく、ジェネレーターに値を入れる方法でもあることがyield
わかりました。yield
たとえば、次のコード
グローバルスコープでは、ジェネレータへsend
の値'x'
であり、したがって、出力されます。でも理解できない'y'
f
x 0 y 1
- 2
yield
秒ですが3send
秒です。None
なぜ最初に送信する必要があるのですか? StopIteration
最後にをスローしsend
ます。この例外を回避する方法はありますか?
誰か説明してもらえますか?前もって感謝します。
ruby - Ruby:イールド関数のオーバーロード
Rubyを学習しているときに、各メソッドのこれらの使用法の両方が機能し、同じ出力を生成することに気付きました。Rubyがこれをどのように実現するのか(そして、自分の関数でどのように実現できるのか)疑問に思いました。
私の理解では、コードブロックを受け入れるメソッドの定義を作成する場合、yieldメソッドを使用して、コードブロックに引数を渡し、ブロックを呼び出します。しかし、提供されたコードブロックに応じて異なる引数を渡すように、yieldメソッドをどのように利用できますか?例の場合、yieldメソッドは、ブロック内で2つのパラメーター(つまり、1番目と2番目)が使用されると個々の配列要素を渡し、1つのパラメーターがブロック内で使用されると(つまり、配列)、配列自体を渡すように見えます。 )。