問題タブ [equality-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.

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

r - R で `==` をジェネリック関数にする

==ジェネリック関数を作りたいです。

実行すると: setGeneric("==")、定義は変更されないようです:

を呼び出すとsetgeneric("`==`")、次のエラーが表示されます。

==関数を次のように定義できます。

そして、私はそれを使用できますsetGeneric。しかし、==そこに元の本体を配置する必要があり、これは不格好に思えます。

==S4でジェネリックにする方法はありますか?

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

python - `==` を使用して比較すると、値を比較する前に ID が比較されますか?

を使用して 2 つの変数を==比較すると、Python は ID を比較し、それらが同じでない場合は値を比較しますか?

たとえば、同じ文字列オブジェクトを指す 2 つの文字列があります。

これは値を比較しますか、それとも ID のみを比較しますか?:

ID を最初に比較するのは理にかなっています。その通りだと思いますが、これをサポートするドキュメントはまだ見つかっていません。私が持っている最も近いものはこれです:

x==y通話x.__eq__(y)

を呼び出す前に何かが行われたかどうかはわかりませんx.__eq__(y)

0 投票する
15 に答える
23966 参照

c++ - == と != は相互に依存していますか?

私は C++ での演算子のオーバーロードについて学んでい==ます!=。これは、ユーザー定義型用にカスタマイズできる特別な関数にすぎません。しかし、私の懸念は、なぜ2 つの別個の定義が必要なのかということです。a == bが true の場合、 thena != bは自動的に false になり、その逆も成り立つと考えました。定義上、a != bはであるため、他の可能性はありません!(a == b)。そして、これが真実でない状況は想像できませんでした。しかし、私の想像力は限られているのでしょうか、それとも私は何かを知らないのでしょうか?

一方を他方の観点から定義できることは知っていますが、これは私が求めていることではありません。また、オブジェクトを値または ID で比較することの違いについても質問していません。または、2 つのオブジェクトが同時に等しくなる可能性と等しくない可能性があるかどうか (これは絶対にオプションではありません! これらは相互に排他的です)。私が尋ねているのはこれです:

2 つのオブジェクトが等しいことについて質問するのは理にかなっていますが、それらが等しくないことについて質問することは意味がないという状況はありますか? (ユーザーの観点から、または実装者の観点から)

そのような可能性がない場合、一体なぜ C++ でこれら 2 つの演算子が 2 つの異なる関数として定義されているのでしょうか?

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

list - python 2.7リスト操作または等値演算子のバグの可能性

Ipython NotebookでAnaconda 2.2.0のpython 2.7.10を使用しており、次の明らかなバグを観察しています(以下のコードを参照)。2 つの同等のリストに対して同じ操作を行うと、2 つの同等でないリストが生成されます。2 つのリストの開始方法が異なるため、2 つのリストが異なる動作をすることが意図されている場合、2 つのリストの等値比較は True と評価されるべきではありません (A == B <=> F(A) = であるため)。 = F(B)) . 私の考えでは、これはリスト オブジェクトの定義または等価演算子の実装のバグに違いありません。誰かがこれがバグであることを確認し、これをコミュニティに知らせる最善の方法を教えてもらえますか?

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

c# - 演算子の静的オーバーロードが同じクラスの仮想メソッドを呼び出すことができるのはなぜですか?

私はC#で平等を探していて、この行に沿って何かを実装していました:

そして出力は

MyType.Equals オーバーライド
type1 == type2 => Trueを呼び出しています

このように等値演算子をオーバーライドすることによって生じる可能性のある驚きを十分に認識していますが、知りたいのは、インスタンスの仮想メソッド (protected bool Equals(MyType other) in MyType ) を呼び出すことができる理由です。クラス) 静的メソッドから。
わかりました、実際には静的メソッドのようには見えません。

オペレーター

キーワードですが、私が知る限り、IL では静的メソッドとして変換されます。

object.Equals 静的メソッド呼び出しのどこかで魔法が発生すると思われますが、実際にどのように機能するかはわかりません。光を当ててみませんか?