問題タブ [spaceship-operator]
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.
ruby - Ruby <=> (宇宙船) 演算子とは?
Ruby <=>
(宇宙船)オペレーターとは?オペレーターは他の言語で実装されていますか?
ruby - Ruby<=>コンビネータの実装
まれではありませんが<=>
、製品データ型、つまり複数のフィールドを持つクラス(すべて(私たちはすでに<=>
実装されていることを願っています))に(比較または「宇宙船」)演算子を実装して、特定のフィールドを比較したいと考えています。注文。
これは、特に多くのフィールドで、面倒でエラーが発生しやすくなります。エラーが発生しやすいので、その関数を単体テストする必要があると頻繁に感じます。これにより、面倒で冗長性が増します。
Haskellはこれを行うための特に優れた方法を提供します:
(に精通していない人のためfold
に、上記はに拡張されます
D
これは、2つのsに適用できる関数を生成し、を生成しOrdering
ます。)
の定義compareD
は非常に単純なので明らかに正しいので、静的な型チェックがなくても単体テストの必要性を感じることはありません。
実際、この質問はこれよりも少し興味深いかもしれません。標準の<=>
演算子だけを使用するのではなく、さまざまな時間にさまざまな方法で並べ替えるからです。たとえば、次のようになります。
だから、質問:
- この種のものをRubyで実装する典型的な方法は何ですか?
- 標準ライブラリで定義されているものだけを使用してそれを行う最も良い方法は何ですか?
- 上記のHaskellコードにどれだけ近づくことができ、それと比較してどれほど信頼できるでしょうか?
<=>
必要に応じて、フィールドにor<
と>
演算子が適切に実装されていることをどのように確認できますか?
ちなみに、これはRubyの質問ですが、このサイトの長老たちが同意すれば、トピックに関するHaskellの手法についての議論を検討できてうれしいです。それが適切かどうかについてコメントしてください。適切な場合は、この投稿にも「haskell」のタグを付けてください。
perl - 宇宙船オペレーターがソート外で使用されるのはいつですか?
Perl の宇宙船演算子 (<=>) が数値ソート ルーチンで使用されているのを見たことがあります。しかし、それは他の状況で役に立ちそうです。実用的な使い方しか思いつきません。
Perl ソート以外で使用できる例は何ですか?
これはベスト プラクティスの質問です。
c++ - 三値比較関数と比較した小なり演算子のみを使用した並べ替え
C ++ / STLでは、より小さい演算子のみを使用してソートが行われます。並べ替えアルゴリズムが実際にどのように実装されているかはわかりませんが、他の操作は暗黙的に作成されていると思います。
たとえばJavaのようなtrivalue*比較関数を使用する場合と比較して、これはパフォーマンスに優れているのでしょうか、それともこの設計上の決定がなされたのでしょうか。
私の仮定では、3値比較関数はそれ自体でこれらの比較を実装する必要があり、同じパフォーマンスが得られます。
** 3値比較関数とは、以下、等しい、およびより大きい場合に-1、0、および1を返す比較関数を意味します*
更新:
宇宙船の<=>
オペレーターはC ++ 20で登場するようですので、委員会は明らかに、のみを使用することの欠点があると考えましたoperator<
。
ruby-on-rails - Rubyの宇宙船オペレーターをオーバーライドする<=>
Rubyの<=>(宇宙船)演算子をオーバーライドして、リンゴとオレンジを最初に重量で並べ替え、次にオレンジを甘さで並べ替えるようにしようとしています。そのようです:
しかし、これは機能しません。誰かが私がここで間違っていることを教えてもらえますか、それともこれを行うためのより良い方法ですか?
ruby - Ruby の <=> 演算子と混同
Ruby の <=> 演算子と混同しています。== や === とどう違うのですか? 包括的な例/ユースケースはありますか? ありがとう。
ruby-on-rails - Rubyでの「<==>」の意味は何ですか?
Rubyでの「<==>」の意味は何ですか?
例:コードは、次の形式の数値を比較する次のクラスから取得されますx.x.x
。
次のコードは、、のような番号を注文するこのクラスからのものですx.x.x
。
ruby - 宇宙船のオペレーターが等号を1つだけ持っているのはなぜですか?
なぜ宇宙船のオペレーター<=>
は2つではなく1つの等号を持つように選ばれたのですか?これは、通常は割り当てを意味する1つの等号と、比較を意味する2つの等号と矛盾していると見なされますか?
ruby - Rubyの<=>と==の違いは?
それらの違いは何ですか?Java のバックグラウンドから来て、<=> は Java の equals() と同じように見えますが、== は直接参照比較用です。これは正しいですか?
ruby - Rubyのブール値でソートまたは宇宙船(空飛ぶ円盤)演算子(<=>)が機能しないのはなぜですか?
「メソッドに対する個々のオブジェクトの応答に応じて、オブジェクトのリストをソートすることは可能ですか?」で、空飛ぶ円盤がブール値で機能しないことを発見しました。
検討:
ルビー 1.8.7:
ルビー 1.9.3:
true と false に正規の並べ替え順序がないことに関係している可能性があります。どちらが最初に来るのでしょうか? しかし、それは私にはかなり弱いように聞こえます。
これは のバグsort
ですか?