問題タブ [equals]
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.
javascript - JavaScript でオブジェクトを比較する方法を定義するにはどうすればよいですか
JavaScript クラス Foo を定義したいと思います。
Foo の「インスタンス」を作成します。
標準の == 等値演算子を使用して、Foo のインスタンスを相互に比較できるようにします。
これを行う方法が見つかりません。私は関数で何かに取り組んでいると思っていましたvalueOf()
が、これは比較の片側がプリミティブである場合にのみ有用であり、両方がオブジェクト型である上記の場合ではありません。
Ruby のものに似た本当に単純なものを見逃していませんか?
java - Long.valueOf(0).equals(Integer.valueOf(0))がfalseなのはなぜですか?
この質問は、奇妙なHashMap.put()の動作によって促されます
Map<K,V>.put
なぜかかるのか理解していると思いますK
が、Map<K,V>.get
かかるのですがObject
、そうしないと既存のコードが壊れすぎてしまうようです。
ここで、非常にエラーが発生しやすいシナリオに入ります。
Long
値が範囲内にあり、値が等しい場合にtrueを返すことで、これを解決できませんでしたint
か?
c# - C# UnitTest - 引数が null の場合、Assert.AreEqual() は Equals を呼び出さない
私は最近、Google が完全に説明できなかった奇妙な動作に出くわしました。
このテストは成功すると思います。ただし、Visual Studio 2008 / .NET 3.5 では失敗します。そのようにすることを意図したものですか、それともバグですか?
c# - 「as」と正確性、柔軟性、およびパフォーマンスのための特殊な方法を使用した C# の Equals のオーバーライド
C# で正確で柔軟かつ高速な Equalsを実装する最善の方法について考えてみました。パフォーマンスのためには、特殊な Equals (実際のクラスのオブジェクトをパラメーターとして受け取る) が必要であると考えました。コードの重複を避けるために、一般的な Equals は特殊化された Equals を呼び出す必要があります。継承されたクラスであっても、null チェックは 1 回だけ実行する必要があります。
私は最終的にこのデザインを思いつきました:
重要なアイデア:
- 「as」演算子の使用。このようにして、一般的な Equals で null をチェックする必要がなくなります。間違ったクラス タイプは null に縮小され、特殊化された Equals に分類されます。
- 派生クラスであっても、正確に 1 点で Null チェックを行います。
- 属性を次々に確認すると、明確な構造が得られます。
この概念に欠陥はありますか、それとも条件を逃しましたか?
java - equals()が複数の独立したフィールドに基づいている場合のhashCode()メソッド
どちらかが等しい場合、このタイプのオブジェクトは等しいと見なされるように、2つのフィールドに基づいて等しいクラスがあります。このようなequals()のhashCode()関数を記述して、equalsがtrueを返すときにhashCodeが等しいという一般的なコントラクトが保持されるようにするにはどうすればよいですか?
このクラスのhashCode()関数を作成するにはどうすればよいですか?そして、私はここで次のような定数を返すという些細なケースを避けたいと思います。
sql - Equals(=) と LIKE の比較
SQL を使用する場合=
、WHERE
句の代わりに使用する利点はありLIKE
ますか?
特別な演算子がなくてもLIKE
同じ=
ですよね?
c# - C#での値の同等性のためのカスタムクラスの最も堅牢なEquals実装
Point2クラスがあり、次のEqualsを実装したいとします。
これは、Effective C#3の本からのものです。
それはやり過ぎですか?
java - .equals() を生成するときに、instanceof よりも getClass() を優先する理由はありますか?
私は Eclipse を使用して と を生成.equals()
し.hashCode()
ています。「型を比較するには 'instanceof' を使用する」というオプションがあります。デフォルトでは、このオプションはチェックされておらず、.getClass()
型の比較に使用されます。私が好むべき理由はあります.getClass()
かinstanceof
?
使用しない場合instanceof
:
使用instanceof
:
私は通常、instanceof
オプションをチェックしてから、「if (obj == null)
」チェックを外します。( null オブジェクトは常に失敗するため、冗長instanceof
です。) それが悪い考えである理由はありますか?
c# - アイテムのプロパティを比較して List.Contains を自動的に処理することは可能ですか?
List.Contains(myItem)
リスト内のアイテムのプロパティが のプロパティと等しいかどうかを確認するために、同様のことを行うことができますかmyItem
。
(次のようなものを検討Contains
しました。Exists
単純な表現は得られません。)
次のような単純なものが必要です。
少なくとも 1 つの項目が満たされる場合、このメソッドは自動的に true を返す必要がありますorderLines[i]
。
IEquatable<OrderLine>
プロパティによって等しいものを実装しましProduct
たが、そこから先に進む方法が見つかりません。