问题标签 [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.
java - Java:clone() 和相等性检查
也许我不明白它是如何clone()
工作的。返回值不应该等于调用者吗?
wpf - .NET 委托平等?
无论如何,我认为这是个问题。我正在使用一个 RelayCommand,它用两个代表装饰一个 ICommand。一个是 _canExecute 的 Predicate,另一个是 _execute 方法的 Action。
---背景动机--
动机与对WPF演示文稿的 ViewModel 进行单元测试有关。一种常见的模式是,我有一个 ViewModel 具有 ObservableCollection,并且我想要一个单元测试来证明该集合中的数据是我所期望的给定一些源数据(也需要转换为 ViewModel 的集合)。尽管两个集合中的数据在调试器中看起来相同,但看起来测试失败是由于 ViewModel 的 RelayCommand 上的相等性失败。这是失败的单元测试的示例:
--- 回到委托平等 ----
这是 RelayCommand 的代码 - 它基本上是对 Josh Smith 的想法的直接抄袭,我添加了一个相等的实现以试图解决这个问题:
在单元测试中,我有效地将 _execute 委托设置为相同的方法(_canExecute 在两种情况下都为空),单元测试在此行失败:
调试器输出:
谁能解释我缺少什么以及解决方法是什么?
---- 编辑评论 ----
正如 Mehrdad 指出的,调试会话中的 get_CloseCommand 起初看起来有点奇怪。它实际上只是一个属性获取,但它确实提出了一个问题,即如果我需要做一些技巧来使其工作,为什么代表的平等是有问题的。
MVVM 的一些要点是将演示文稿中可能有用的任何内容公开为属性,因此您可以使用 WPF 绑定。我正在测试的特定类在其层次结构中有一个 WorkspaceViewModel,它只是一个已经具有关闭命令属性的 ViewModel。这是代码:
公共抽象类 WorkspaceViewModel : ViewModelBase {
您可以看到 close 命令是一个 RelayCommand,并且我使用 equals 进行了修改以使单元测试工作。
@Merhdad 这是仅当我在相等比较中使用 Trickster 的 delegate.Method 时才有效的单元测试。
[TestFixture] 公共类 WorkspaceViewModelTests { private WorkspaceViewModel vm1; 私有 WorkspaceViewModel vm2;
----- 使用 MERHDAD 想法的最新编辑
调试器输出 ?valueOfThisObject {Smack.Wpf.ViewModel.RelayCommand} 基础 {SharpArch.Core.DomainModel.ValueObject}: {Smack.Wpf.ViewModel.RelayCommand} _canExecute: null _execute: {Method = {Void _executeClose(System.Object) }}
这是将代码更改为后的结果:
wpf - wpf mvvm equality
I would like to use an MVVM in a WPF project I'm working on, including the use of RelayCommands (aka DelegateCommands). I'm running into an interesting but frustration problem in implementing equality for my ViewModels, outlined here. I have a base class in my ViewModel hierarchy which examines all properties reflectively as part of its equality comparison, and the Command consistently fails even when it looks like it shouldn't.
How are others of you using this design approach dealing with equality?
Cheers,
Berryl
.net - .NET 结构中的成员相等性测试使用的算法是什么?
.NET 结构中的成员相等性测试使用的算法是什么?我想知道这一点,以便我可以将其用作我自己算法的基础。
我正在尝试为任意对象(在 C# 中)编写递归成员相等性测试,以测试 DTO 的逻辑相等性。如果 DTO 是结构,这会容易得多(因为 ValueType.Equals 主要做正确的事情),但这并不总是合适的。我还想覆盖任何 IEnumerable 对象(但不是字符串!)的比较,以便比较它们的内容而不是它们的属性。
事实证明,这比我预期的要难。任何提示将不胜感激。我会接受证明最有用的答案或提供指向最有用信息的链接。
谢谢。
c# - C# 中两个枚举何时相等?
我创建了两个枚举,我知道它们不一样,但我仍然认为它们相等是有道理的,因为它们的字符串表示形式和数字表示形式是相等的(甚至是相同的......)。
换句话说:我希望第一个测试通过,第二个测试失败。然而实际上,他们都失败了。所以:C# 中的两个枚举何时相等?或者无论如何要在 C# 中定义等号运算符?
谢谢!
更新:1)所以到目前为止所有的答案都是比较表示,无论是整数还是字符串。我收集的枚举本身总是不平等的?没有办法为它定义平等吗?
pointers - Haskell中的指针相等?
Haskell中有指针质量的概念吗?== 需要导出 Eq 的东西,我有一些包含 (Value -> IO Value) 的东西,而且 -> 和 IO 都没有导出 Eq。
编辑:我正在为另一种具有指针相等性的语言创建解释器,因此我试图对这种行为进行建模,同时仍然能够使用 Haskell 函数对闭包进行建模。
编辑:示例:我想要一个special
可以执行此操作的函数:
ruby - 当您只关心相交键时,如何在 Ruby 中轻松测试哈希相等性?
假设我有以下哈希:
我需要一大块逻辑来比较两者是否相等,只考虑相交键。
在此示例中,“b”键是两个散列之间唯一的共同点,并且它的值在两者中都设置为“2”,因此根据该逻辑,这两个散列将被视为相等。
同样,由于“d”键的不等性,这两个哈希值也不相等(“a”和“c”键值被忽略,因为它们对于各自的哈希值是唯一的):
Ruby 中是否有一个聪明的单线可以计算两个哈希的相交键,然后根据这些键比较它们的值是否相等?
如果您提供测试,则可以加分。
如果您将其修补到 Hash 类中,则会获得更多奖励积分。
java - 断言两个 java bean 是等价的
这个问题很接近,但仍然不是我想要的。我想以一种通用的方式断言两个 bean 对象是等价的。如果不是,我想要一个详细的错误消息来解释差异,而不是布尔“等于”或“不等于”。
c++ - C++ 中派生类的等式测试
在 C++ 中,派生类如何以有意义的方式覆盖基类相等性测试?
例如,假设我有一个基类 A。类 B 和 C 派生自 A。现在给定两个指向两个 A 对象的指针,我可以测试它们是否相等(包括任何子类数据)吗?
有干净的方法吗?我最好的选择是什么?
谢谢!
entity-framework - 实体框架:是否有一种方法来比较 EntityObject 的相等值?
有没有一种简单的方法来比较两个 EntityObject 的值相等性。我只是想检查所有数据库值是否相同,所以我不在乎 EntityKey 是否不同。
这可能是内置的吗?或者我应该只写我自己的方法。
我猜 Equals() 在这里我想要的不起作用?