問題タブ [generator]

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

python - ジェネレーターでの先読みの使用

文字列を形式(トークンの種類、トークンの値)のタプルにトークン化するジェネレーター ベースのスキャナーを Python に実装しました。

印刷します

次のタスクは、トークン ストリームの解析を意味します。そのためには、ポインターを先に動かさずに、現在のアイテムから 1 つ先のアイテムを参照できるようにする必要があります。イテレーターとジェネレーターはアイテムの完全なシーケンスを一度に提供するのではなく、必要に応じて各アイテムを提供するという事実は、次のアイテム__next__()が呼び出されない限り、リストと比較して先読みを少しトリッキーにします。

ジェネレーターベースの先読みの簡単な実装はどのようになりますか? 現在、ジェネレーターからリストを作成することを意味する回避策を使用しています。

先読みは、次のようなもので簡単に実装できます。

もちろん、これだけでうまくいきます。scan()しかし、それを考えると、私の 2 番目の疑問が生じます。そもそもジェネレーターを作成する意味は本当にあるのでしょうか?

0 投票する
0 に答える
7293 参照

ruby - Ruby の GUID ジェネレーター

重複の可能性:
Ruby のガイド

Rubyで(レール/merbなしで)グローバルに一意のIDを生成するにはどうすればよいですか?

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

python - Pythonリバースジェネレータ

ジェネレータオブジェクトを反転する方法を探しています。私はシーケンスを逆にする方法を知っています:

しかし、ジェネレーターを入力として、逆ジェネレーターを出力として(len(seq)は同じままなので、元のシーケンスの値を使用できます)、同様のことが可能ですか?

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

syntax - リスト生成式の構文の選択

C# には、次のような構文を持つジェネレーター関数があります。

私のプログラミング言語 (Java、Scala、ActionScript、および C# に似た単純なオブジェクト指向プログラミング) で私が興味を持っている機能は、ジェネレータ式です。これらは本質的に、ジェネレータ関数のシンタックス シュガーです。

私の現在のお気に入りの候補は、次の構文です。

range(0, 42)は組み込みのジェネレーター関数です。

私の質問は、C#/Java/Scala/ActionScript 型言語で、ジェネレーター式にどの構文を使用することを希望しますか? また、その理由は何ですか?

応答に影響を与える可能性のあるいくつかの要因は、Scala や ActionScript のように、私の言語の型は型の後に宣言されることです。例えば:

また、無名関数は次のようになります。

それ以外は、言語構文の残りの部分は Java または C# に似ています。私の言語には、foreachC# に非常によく似たステートメントがあります。

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

language-agnostic - ジェネレーター機能が割り当てられるとどうなりますか?

ファーストクラス関数を備えたプログラミング言語がある場合。ジェネレーター関数を共有する場合のセマンティクスはどうあるべきですか?

例えば:

私は3つのことを想像することができます:

  1. c == 2、d == 3は、ジェネレーター関数が共有されていることを意味します
  2. c == 0、d == 2は、値が初期化された新しいジェネレーター関数が作成されることを意味します
  3. c == 2、d == 2は、ジェネレーターの現在の状態をコピーすることにより、新しいジェネレーター関数が作成されることを意味します

私の意見では、最良の答えは、あるメカニズムまたは別のメカニズムを実行するための最も説得力のある議論を提供するでしょう。多くの場合、先行技術が最も説得力のある議論であることがわかります。

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

python - Python 関数呼び出しの引数リストにジェネレーター式をネストする

リストを組み合わせるために、次のイディオムを使用するのが好きな場合があります。

(この特定の結果を得る簡単な方法があることは知っていますが、リストのリストのリスト内の要素を反復処理する場合などに便利です。問題は、ジェネレーター式を使用するときに、これがエラーが発生しやすくなります。

ここで何が起こっているかというと、内側のジェネレーター式が引数として に渡されるitertools.chainため、それらが評価される時点で、外側のジェネレーター式は終了nし、最終的な値である に固定されます'b'。「そうしないでください」以外に、この種のエラーを回避する方法を誰かが考えたことがあるかどうか疑問に思っています。

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

concurrency - パラレル マップ (ジェネレーター) 演算子

私は自分の言語で並列マップ演算子を定義することに興味があります。式を指定して、リストを新しいリストに変換します。ジェネレーターに似た構文になります。C# や Python のジェネレーターとは異なり、コンパイラーが必要とする場合 (たとえば、アイドル状態のコアがあり、リストが非常に大きい場合)、並列で評価される可能性があります。順次実行されるものwitheachと区別するために呼び出されます。foreach

たとえば、次のように考えてください。

私の質問は、副作用を入れる可能性のあるプログラマーにとって、これはあまりにも直感的ではないのfでしょうか? もちろん、ドキュメントではこれを行うべきではないと言いたいのですが、ほとんどのプログラマーは言語ドキュメントを読みません。:-)

より大きな問題は、現代のプログラマーが言語の暗黙的な並列リスト処理セマンティクスに適応できるか、それともより明示的にする必要があるかということです。

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

sql - ストアド プロシージャをサポートする Perl 用 SQL クエリ ジェネレータ

私が取り組んでいる現在のコード ベースは、その場しのぎの条件付き文字列連結でいっぱいで、明確な SQL クエリとは言えません。私はそれらを保守可能にしたいのですが、DBIx::Classを使用するのは複雑すぎて今のところ (巨大なレガシー ベース) に移行できないため、何らかの SQL ジェネレーターを使用して、少なくともそれらをより堅牢にすることを検討しています。オブジェクト指向またはその他のクリーンな手法で SQL を作成します (DB の処理は不要です)。

そのジェネレーターに対する一般的な制約の 1 つは、ストアド プロシージャを適切な方法で使用できることです。これは、私のアプリケーションはほとんどストアド プロシージャに基づいているためです。たとえば、私はする必要がありSELECT * FROM StoredProcedure(Parameter) WHERE ...ます。Fey::SQLSQL::Abstractなどを調べましたが、この種のステートメントの「インライン SQL」以外のサポートは見当たりませんでした。DBIx::ClassEXECUTE ...でさえサポートされていません。率直に言って本当に信じられません。おそらく間違った場所を探していたのでしょう。

私は実際にFey::SQLのアプローチが好きでしたが、ある種のスキームが必要であることがわかりました:

あなたは何をお勧めします?

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

security - 資格情報に従ってsymfony管理ジェネレーターページ全体を制限する

さまざまなテーブルを処理するための多数の管理ジェネレーターを備えた Web サイトがあります。認証済みユーザーの範囲内で、個々のアクションやフィールドだけでなく、管理モジュール全体へのアクセスを拒否できるようにしたいと考えています。

のグローバル資格情報パラメーターはないようで、モジュール レベルで何かをgenerator.yml入れても効果がないようです。security.yml

生成されたコードをcache/front/dev/modules/autoFoo/actions/actions.class.php参照し、特に preExecute() を調べましたが、どうすればよいかわかりません。

自分の actions.class.php ファイルで preExecute() を上書きする必要があると思いますが、たとえば、parent::preExecute() をいつ呼び出すかなど、何を上書きする必要があるかについては少しわかりません (実際に必要な場合)するかしないか)。