問題タブ [equality]

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

java - Java: clone() と等値チェック

たぶん、私はどのように動作するのか理解していませんclone()。戻り値は呼び出し元と同じであるべきではありませんか?

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

wpf - .NETデリゲートの平等?

とにかく、これが問題だと思います。ICommand を 2 つのデリゲートで装飾する RelayCommand を使用しています。1 つは _canExecute の Predicate で、もう 1 つは _execute メソッドの Action です。

---背景の動機-

動機は、 WPFプレゼンテーションの ViewModel の単体テストに関係しています。よくあるパターンは、ObservableCollection を持つ 1 つの ViewModel があり、そのコレクション内のデータが、(ViewModel のコレクションに変換する必要がある) ソース データが与えられたときに期待するものであることを単体テストで証明したいというものです。デバッガーでは両方のコレクションのデータが同じように見えますが、ViewModel の RelayCommand での等価エラーが原因でテストが失敗したように見えます。失敗した単体テストの例を次に示します。

--- デリゲートの平等に戻る ----

これが RelayCommand のコードです。これは基本的に、この問題を解決するために私が追加した平等の実装を伴う、Josh Smith のアイデアの直接のぼったくりです。

_execute デリゲートを同じメソッドに効果的に設定した単体テストでは (どちらの場合も _canExecute は null です)、単体テストは次の行で失敗します。

デバッガ出力:

私が欠けているものと修正が何であるかを誰かが説明できますか?

---- 編集された発言 ----

Mehrdad が指摘したように、デバッグ セッションからの get_CloseCommand は、最初は少し奇妙に見えます。これは実際にはプロパティの取得にすぎませんが、機能させるためにトリックを行う必要がある場合、デリゲートの等価性がなぜ問題になるのかという点が浮き彫りになります。

MVVM のポイントの一部は、プレゼンテーションで役立つ可能性のあるものをすべてプロパティとして公開することです。これにより、WPF バインディングを使用できます。私がテストしていた特定のクラスには、その階層に WorkspaceViewModel があります。これは、閉じるコマンド プロパティを既に持っている単なる ViewModel です。コードは次のとおりです。

public 抽象クラス WorkspaceViewModel : ViewModelBase {

close コマンドは RelayCommand であり、単体テストを機能させるために equals を使っていることがわかります。

@Merhdadこれは、等価比較でTricksterのdelegate.Methodを使用した場合にのみ機能する単体テストです。

[TestFixture] public class WorkspaceViewModelTests { private WorkspaceViewModel vm1; プライベート WorkspaceViewModel vm2;

----- MERHDADのアイデアを使用するための最新の編集

デバッガ出力 ?valueOfThisObject {Smack.Wpf.ViewModel.RelayCommand} base {SharpArch.Core.DomainModel.ValueObject}: {Smack.Wpf.ViewModel.RelayCommand} _canExecute: null _execute: {Method = {Void _executeClose(System.Object) }}

これは、コードを次のように変更した後の結果です。

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

wpf - wpfmvvmの平等

私が取り組んでいるWPFプロジェクトでMVVMを使用したいと思います。これには、RelayCommands(別名DelegateCommands)の使用も含まれます。ここで概説するように、ViewModelsの同等性を実装する際に、興味深いがフラストレーションの問題に直面しています。ViewModel階層に基本クラスがあり、同等性の比較の一部としてすべてのプロパティを反射的に調べます。コマンドは、そうではないように見えても、常に失敗します。

他の人は、平等を扱うこの設計アプローチをどのように使用していますか?

乾杯、
ベリール

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

.net - .NET 構造体のメンバーごとの等価性テストで使用されるアルゴリズムは何ですか?

.NET 構造体のメンバーごとの等価性テストで使用されるアルゴリズムは何ですか? 独自のアルゴリズムの基礎として使用できるように、これを知りたいです。

DTO の論理的等価性をテストするために、(C# で) 任意のオブジェクトに対して再帰的なメンバーごとの等価性テストを作成しようとしています。これは、DTO が構造体である場合 (ValueType.Equals がほとんど正しいことを行うため) はかなり簡単ですが、常に適切であるとは限りません。また、プロパティではなく内容が比較されるように、IEnumerable オブジェクト (文字列ではありません) の比較をオーバーライドしたいと考えています。

これは、私が予想していたよりも難しいことが証明されています。どんなヒントでも大歓迎です。最も有用であることが証明された回答、または最も有用な情報へのリンクを提供する回答を受け入れます。

ありがとう。

0 投票する
7 に答える
8436 参照

c# - C#で2つの列挙型が等しいのはいつですか?

私は2つの列挙型を作成しましたが、それらは同じではないことはわかっていますが、文字列表現と数値表現が等しい(さらには同じである)ため、同じになるのは理にかなっていると思います。

言い換えれば、最初のテストに合格し、2番目のテストに失敗したいのです。しかし実際には、どちらも失敗します。つまり、C#の2つの列挙型が等しいのはいつですか?または、C#でequals演算子を定義する方法はありますか?

ありがとう!

更新:1)これまでのところ、答えはすべて、intであれ文字列であれ、表現を比較しています。列挙型自体は常に私が収集する不平等ですか?平等を定義する手段はありませんか?

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

pointers - Haskellのポインタの等価性?

Haskell にポインターの品質の概念はありますか? == は式を導出する必要があり、(値 -> IO 値) を含むものがありますが、-> も IO も式を導出しません。

編集:ポインターの等価性を持つ別の言語のインタープリターを作成しているため、Haskell関数を使用してクロージャーをモデル化できるようにしながら、この動作をモデル化しようとしています。

編集:例:specialこれを行う関数が必要です:

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

ruby - キーの交差のみに関心がある場合、Ruby でハッシュの等価性を簡単にテストするにはどうすればよいでしょうか?

次のハッシュがあるとします。

交差するキーのみを考慮して、2つを比較して等しいかどうかを判断するロジックのチャンクが必要です。

この例では、'b' キーが 2 つのハッシュ間の唯一の共通点であり、その値は両方で '2' に設定されているため、そのロジックにより、これら 2 つのハッシュは等しいと見なされます。

同様に、これら 2 つのハッシュは、「d」キーが等しくないため等しくありません (「a」と「c」のキー値は、それぞれのハッシュに固有であるため無視されます)。

Ruby には、2 つのハッシュの交差するキーを計算し、それらのキーに基づいて値が等しいかどうかを比較できる賢いワンライナーがありますか?

テストを提供するとボーナスポイント。

Hash クラスにモンキー パッチを適用すると、ボーナス ポイントが増えます。

0 投票する
12 に答える
19359 参照

java - 2つのJavaBeanが同等であることを表明します

この質問は近いですが、それでも私が望むものではありません。2つのBeanオブジェクトが同等であることを一般的な方法で主張したいと思います。そうでない場合は、ブール値の「等しい」または「等しくない」の代わりに、違いを説明する詳細なエラーメッセージが必要です。

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

c++ - C++での派生クラスの同等性テスト

重複の可能性:
クラス階層のoperator ==をオーバーロードする正しい方法は何ですか?

C ++では、派生クラスはどのようにして基本クラスの同等性テストを意味のある方法でオーバーライドできますか?

たとえば、基本クラスAがあるとします。クラスBとCはAから派生します。2つのAオブジェクトへの2つのポインターが与えられた場合、それらが等しいかどうかをテストできますか(サブクラスデータを含む)?

それを行うためのクリーンな方法はありますか?私の最善の策は何ですか?

ありがとう!

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

entity-framework - Entity Framework:EntityObjectの等しい値を比較する方法はありますか?

2 つの EntityObject の値が等しいかどうかを比較する簡単な方法はありますか。すべてのデータベース値が同じかどうかを確認したいだけなので、EntityKey が異なっていてもかまいません。

これは組み込み可能ですか?または、独自のメソッドを作成する必要があります。

ここで必要なように Equals() が機能しないと思いますか?