问题标签 [equatable]

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 回答
67 浏览

swift - 在两个协议对象上使用 equals

理想情况下,我会让服务器实现 Equatable 协议,但我遇到了问题。这是我的代码

最终,我只想将抽象协议对象与彼此进行比较。大多数其他示例都在比较具体类型。

我是因为尝试这个而疯狂还是什么?:P

0 投票
0 回答
43 浏览

swift - 如何测试 Equatable 的类型(不是实例)?

从这里关于测试协议一致性的另一个问题来看,这就是解决方案......

但是,由于自己的要求,这是不允许的...

那么我该如何编写上面的内容,以便我可以检查相等的一致性并相应地处理它呢?

0 投票
2 回答
648 浏览

swift - 在 Swift 中将 JSONEncoder 用于 Equatable 方法

我知道 JSON 密钥没有任何顺序并且可以随机生成,但是没有任何东西阻止我编写这个函数,并且从我的测试来看,这适用于我测试的每个用例。

我要解决的问题是为一种类型编写一个函数,该类型具有一个协议的数组,具有大约 20 种不同的实现,我必须实现该==函数而不是快速自动合成。而且我知道我可以切换到JSONSerialization.writeJSONObject选项.sortedKeys以保留键顺序。

这个实现而不是任何其他编写==函数的方法的缺点是什么?

0 投票
1 回答
237 浏览

swift - `NSAttibutedString` 如何等同于`Any` 类型的属性值?

enumerateAttribute(_:in:options:using:)方法NSAttributedString似乎等同于 type 的任意实例Any。当然,Any不符合Equatable,所以这应该是不可能的。

问题:该方法如何将一个实例与Any另一个实例进行比较?

上下文:在 Swift 中,我是 NSTextStorage 的子类,并且需要在 Swift中提供我自己的此方法的实现。

观察:

  • NSAttributedString属性以键值对的形式出现,键是 typeNSAttributedString.Key的实例,值是 type 的实例Any?,每一对都与字符串中的一个或多个字符范围相关联。至少,从外部看,数据结构是这样的;内部实现是不透明的。
  • enumerateAttribute方法遍历 a 的整个范围NSAttributedString,有效地识别与指定键对应的每个不同值,以及该值适用的范围。
  • 对应于给定键的值可以是多种不同的类型。
  • NSAttributedString似乎无法知道这些Any值可能是什么基础类型,因此似乎无法进行类型转换以比较两个给定Any值。
  • 然而,该方法以某种方式基于值的差异来区分字符串的范围Any
  • 有趣的是,即使底层类型符合Equatable. 我认为这是一个线索,表明该方法可能正在使用某种反射来执行比较。
  • 更有趣的是,该方法甚至在底层类型确实符合时区分值,Equatable并且两个值之间的差异是特定实现Equatable有意忽略的差异。换句话说,即使a == b返回 true,如果 a 和 b 被忽略的不透明属性存在差异==,该方法也会将值视为不同,而不是相同。
  • 我假设该方法连接到 ObjC 中的实现。

答案是: 不能在 Swift 中完成?

0 投票
1 回答
135 浏览

ios - Hashable == 方法不能快速检测两个对象之间的差异

我实现了下面的类:

我还定义了这个类的一个对象数组:

接下来,我有以下每秒运行的方法:

这使用此处描述的 DeepDiff 框架:https ://github.com/onmyway133/DeepDiff

我的目标是刷新对数组UICollectionView所做的更改tables,但是框架没有检测到更改,即使我的==方法检查了timeRemainingcurrentPrice匹配。

0 投票
1 回答
378 浏览

swift - 如何让 Sequence 实现 Equatable?

我有以下最佳尝试:

但这似乎不起作用。此外,它要求两个序列具有相同的确切类型,而我只想限制它们的Element类型相同。有没有办法做到这一点?

0 投票
1 回答
74 浏览

swift - 我如何理解这句话“具有相同哈希值的两个实例不一定相等。”

当我阅读 Advanced Swift 一书和“可哈希需求”一章时,我对这个解释感到困惑

两个相等的实例(由您的 == 实现定义)必须具有相同的哈希值。反之则不然:具有相同哈希值的两个实例不一定比较相等。

我如何理解“反向”情况,或者为什么具有相同哈希值的两个实例不一定比较相等。

0 投票
2 回答
1129 浏览

swift - 在 Swift 中覆盖 Equatable 和 Hashable

有没有办法覆盖 NSManagedObject 的 Equatable?我有一个包含 300k 个对象的 coredata 数据集,我需要根据对象的业务 ID 删除重复项。

覆盖错误消息:

在此处输入图像描述

0 投票
3 回答
255 浏览

swift - 如何使用 Equatable 比较基于不同属性的自定义对象?

我正在使用 equatable 协议来比较基于一个名为 的属性的两个自定义对象mediaUID
有没有办法在不同属性的比较之间切换?有时我需要按或按likeUID进行
比较。func fetchNotificationsRemovedmediaUID

0 投票
2 回答
504 浏览

swift - 避免 Equatable 和 Hashable 样板,Swift 4.2

在项目中,我们使用模型层的类,因此我必须编写如下代码:

这个样板可以以某种方式避免吗?默认情况下是否可以实现该Equatable比较?.hashValue谢谢。