問題タブ [idioms]

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

python - `match = re.match(); の代替 一致する場合: ...` イディオム?

何かが正規表現に一致するかどうかを確認したい場合は、最初のグループを出力します..

これは完全に衒学的ですが、中間match変数は少し面倒です..

Perl などの言語は、新しい$1..$9マッチ グループの変数を作成することでこれを行います。

このredditのコメントから、

..これは興味深いアイデアだと思ったので、簡単な実装を書きました。

(この機能は、理論的にはオブジェクトにパッチすることができ_sre.SRE_Matchます)

一致するものがない場合、ステートメントのコード ブロックの実行をスキップできると便利ですwith。これにより、これが簡素化されます。

..しかし、これはPEP 343から推測できることに基づいて不可能に思えます

何か案は?私が言ったように、これは本当に些細な煩わしさであり、ほとんどコードゴルフのようです..

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

python - 変数のチェックと割り当てのためのPythonショートカットはありますか?

私は自分自身が以下をたくさんタイプしていることに気づいています(それが関連しているなら、Djangoのために開発しています):

または、より一般的に(つまり、パラメータリストを作成する)

これを単純化するために私が知らないショートカットはありますか?ある種の論理でmyVariable = assign_if_exists(testVariable)何か?

0 投票する
5 に答える
303 参照

c++ - ボイドを返すことに関する文体の質問

次の不自然な例を考えてみましょう。

このコードは問題なく動作し、仕様が有効であると確信していますが、両方の関数がプロトタイプ化されているにもかかわらず、呼び出しが関数の結果を返すように見えるため、私は(おそらく私自身で)この珍しいスタイルを検討します無効になります。

通常、私は次のことを期待します。

これは、何が起こっているのかについて曖昧さを残さないと私は感じています。

SOコミュニティ、returning-voidコーディングスタイルが混乱しているのか、問題があるのか​​について意見をいただけますか?それはイディオムの感触を持っています。これを使うべきですか、それとも避けるべきですか?

一般的に、私は明快さを追求し、2番目のスタイルを使用します。一方で、最初の形には、私をいくらか惹きつける清楚さがあります。

0 投票する
8 に答える
12340 参照

ruby-on-rails - has_many :through での重複を避けるための Rails イディオム

私の Rails アプリでは、ユーザーとロールの間に標準的な多対多の関係があります。

ユーザーに任意のロールを 1 回だけ割り当てることができるようにしたいと考えています。重複を挿入しようとしても、リクエストを無視する必要があります。エラーをスローしたり、検証の失敗を引き起こしたりすることはありません。私が本当に表現したいのは「セット」です。セットに既に存在する要素を挿入しても効果はありません。{1,2,3} U {1} = {1,2,3}、{1,1,2,3} ではありません。

私は次のようにできることに気づきました:

またはラッパーメソッド(例add_to_roles(role))を作成することによって、しかし私は書くことができるように、関連付けを介して自動化する慣用的な方法を望んでいました:

そして、それは私のために仕事をします。このようにして、重複をチェックしたり、カスタム メソッドを使用したりすることを覚えておく必要はありません。フレームワークに欠けているものはありますか?最初は has_many の :uniq オプションでできると思っていましたが、基本的には「個別に選択する」だけです。

これを宣言的に行う方法はありますか?そうでない場合は、関連付け拡張機能を使用することでしょうか?

デフォルトの動作が失敗する例を次に示します。

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

c++ - 一時オブジェクトへの定数参照

のような関数があるとしましょう

Foo送信する前にオブジェクトを前処理する必要があります

使用法

したがって、X PreprocessFoo()関数は元のオブジェクトを返すか、コピー/変更して、新しいオブジェクトを返すことができる必要があります。const Foo&一時オブジェクトを参照している可能性があるため、返せません。Fooまた、ヒープ上に作成するのは好きではありません。

完全に、Xと の何らかの和集合である必要があり、const Foo&としてFoo扱われる場合がありますconst Foo&。よりエレガントな方法でそれを行う方法はありますか?

私の現在の解決策:

使用法:

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

ruby - これを書くためのより慣用的なRubyの方法は何ですか?

Rubyの人は、このように書いたことで私を笑わせるでしょうか?私が見たRubyコードのように、特に簡潔ではないようです。

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

cross-platform - Mac対Windows対Linuxの慣用的なアプリケーションデータ

私はMacユーザーなので、Mac OS Xの場合、ゲームを素敵な.appバンドルにパッケージ化したいと思っています(たとえば、Aquariaのように)。しかし、Windowsの標準は何ですか?そして、Linuxの標準は何ですか?

私は両方に比較的慣れていませんが、私が理解していることから、どちらにもMacアプリケーションバンドルに相当するものはありません。次に、ユーザーは実行可能ファイルを含むフォルダーと「データ」フォルダーを好みますか?または、データは実行可能ファイルのあるフォルダーに直接配置する必要があります。実行可能ファイルには、ほとんどの場合、ショートカットまたは[スタート]メニューから(たとえば)アクセスできますか?

OS専用に構築された通常のアプリケーションであるとユーザーに感じさせる方法はどれですか。

明確にするために編集:私はインストーラーについて尋ねているのではなく、実際のアプリケーション自体について尋ねています。

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

c++ - C++ でジェネレーターを実装するにはどうすればよいですか?

Python のようなジェネレーターを C++ で実装する方法を知りたいですか? Python では、キーワード「yield」を使用してそうすることができます。しかし、C++ でそれを行う方法は?

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

python - Pythonの予約名であるdjangoモデルフィールドに名前を付けるための適切なイディオムは何ですか?

complex名前の付いたフィールドと。という名前の別のフィールドが必要なモデルがありますtype。これらは両方ともPythonの予約名です。PEP 8によるとcomplex_type_それぞれに名前を付ける必要がありますが、djangoでは、末尾にアンダースコアを付けて名前を付けることはできません。これを処理する適切な方法は何ですか?