问题标签 [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 投票
3 回答
5435 浏览

arrays - 为什么 `Array(0,1,2) == Array(0,1,2)` 不返回预期结果?

据我了解,Scala==定义了两个对象的自然平等。

我料想那Array(0,1,2) == Array(0,1,2)比自然平等。例如,检查数组的所有元素在与另一个数组的对应元素比较时是否返回 true。

人们告诉我,ScalaArray只是一个[]只比较身份的 Java。Array重写'equals方法来比较自然相等不是更有意义吗?

0 投票
1 回答
187 浏览

haskell - 将函数应用于相等值时的不同结果

我只是对 Haskell 进行了一些研究,然后我开始尝试计算文本中两个单词的 Phi 系数。但是,我遇到了一些我无法解释的非常奇怪的行为。

在剥离所有内容后,我最终得到了这段代码来重现问题:

这输出:

因此,尽管sumTupsumFixTup显示为相等,但它们在传递给 时表现不同phi

的定义phi是:

0 投票
2 回答
4158 浏览

c# - C# 字符串相等运算符返回 false,但我很确定它应该是 true... 什么?

我正在尝试为生成大量文本的一段代码编写单元测试。我遇到了一个问题,“预期”和“实际”字符串似乎相等,但 Assert.AreEqual 抛出,并且相等运算符和Equals()返回 false。两个值的结果GetHashCode()也不同。

但是,将两个字符串都放入文本文件并与 DiffMerge 进行比较告诉我它们是相同的。

此外,使用Encoding.ASCII.GetBytes()两个值,然后使用SequenceEquals 比较结果字节数组返回 true。

每个值都是 34KB,所以我暂时不把它们放在这里。有任何想法吗?我完全被难住了。

0 投票
2 回答
13702 浏览

c# - 两个可枚举之间的相等性

我有两个具有完全相同参考元素的枚举,并且想知道为什么 Equals 不会是真的。

作为一个附带问题,下面用于比较每个元素的代码有效,但必须有一种更优雅的方式

0 投票
6 回答
484 浏览

c++ - C++ 对继承的类强制执行条件

我想定义一个抽象基类 X 并执行以下操作:

a) 每个从 X 继承的具体类 Y 定义一个构造函数 Y(int x)

b) 应该可以测试两个 Y 对象是否相等。

对于一个,一个不太好的解决方案是在 X 中放置一个纯虚拟 fromInt 方法,具体类必须定义该方法。但我不能强制施工。

对于 b),我似乎无法在 X 中使用纯虚方法

bool operator == (const X& other) const =0;

因为在重写的类中,这仍然是未定义的。定义是不够的

bool operator == (const Y& other) const { //stuff}

因为类型不匹配。我该如何解决这些问题?

0 投票
1 回答
546 浏览

f# - F# 中的快捷相等检查?

在 F# 中,等式运算符 (=) 通常是外延的,而不是内涵的。那太棒了!不幸的是,在我看来,F# 没有使用指针相等来缩短这些扩展比较。

例如,这段代码:

... 给我一个很大的分段错误[*],尽管 'a' 和 'a' 都评估为相同的参考。那不是很好。其他函数式语言(例如 PLT Scheme)正确地使用指针比较,在可以使用指针比较确定时返回“真”。

所以:我会接受 F# 的相等运算符不使用捷径这一事实;有什么方法可以执行内涵(基于指针的)相等检查吗?(==) 运算符没有在我的类型上定义,如果有人能告诉我它以某种方式可用,我会很高兴。

或者告诉我,我对这种情况的分析是错误的:我也喜欢这样……

[*] 这可能是 Windows 上的堆栈溢出;Mono 有一些我不太喜欢的东西……

0 投票
3 回答
15844 浏览

java - 字符串在 Android 上的 Java 中似乎并不相等,即使它们打印相同

我有一个问题,我很困惑。我的 android 应用程序中有以下代码行:

当我查看第一个 println 语句的输出时,它在 LogCat 中显示为“start”(显然没有引号)。但是当 if 语句执行时,它会转到 else 语句并打印“No it doesn't”。

我想知道节点的名称中是否可能包含某种非打印字符,所以我检查了来自 getNodeName() 的字符串的长度,它是 5 个字符长,如您所料。

有没有人知道这里发生了什么?

0 投票
5 回答
5299 浏览

java - hibernate / webapp上下文中的对象相等性

您如何处理由 hibernate 管理的 java 对象的对象相等性?在“hibernate in action”一书中,他们说应该优先考虑业务密钥而不是代理密钥。
大多数时候,我没有业务密钥。想想映射到一个人的地址。地址保存在 Set 中并显示在 Wicket RefreshingView 中(使用 ReuseIfEquals 策略)。

我可以使用代理 id 或使用 equals() 和 hashCode() 函数中的所有字段。
问题是这些字段在对象的生命周期内会发生变化。要么是因为用户输入了一些数据,要么是由于在 OSIV(在视图中打开会话)过滤器中调用了 JPA merge() 而导致 id 发生了变化。

我对 equals() 和 hashCode() 合约的理解是,它们在对象的生命周期内不应该改变。

到目前为止我已经尝试过:

  • equals() 基于 hashCode() ,它使用数据库 id (如果 id 为空,则为 super.hashCode() )。问题:新地址以空 id 开头,但在附加到一个人时获得一个 id,并且此人在 osiv-filter 中被合并()(重新附加)。
  • 在第一次调用 hashCode() 时延迟计算哈希码并使该哈希码 @Transitional。不起作用,因为 merge() 返回一个新对象并且哈希码不会被复制。

我需要的是我认为在对象创建期间分配的 ID。我在这里有什么选择?我不想介绍一些额外的持久性属性。有没有办法明确告诉 JPA 为对象分配 ID?

问候

0 投票
2 回答
1092 浏览

.net - power shell 中的 -eq 关键字是否测试引用相等性或使用 Object.Equals()

Powershell 中的“-eq”是否测试引用相等性(如 c# 中的“==”)还是相当于调用 Object.Equals()

0 投票
8 回答
1291 浏览

java - 简单问题:以下Java程序的输出

为什么上面的程序输出是3?

编辑

看到以下评论,我正在扩展我的问题:

System.out.println (s1 == s2);

s1 和 s2 是指同一个对象吗?如果那么上面的语句应该打印 true 但它的输出是 false。

它们在哈希码方面是否相似但仍然不同?