问题标签 [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.
swift - 在两个协议对象上使用 equals
理想情况下,我会让服务器实现 Equatable 协议,但我遇到了问题。这是我的代码
最终,我只想将抽象协议对象与彼此进行比较。大多数其他示例都在比较具体类型。
我是因为尝试这个而疯狂还是什么?:P
swift - 如何测试 Equatable 的类型(不是实例)?
从这里关于测试协议一致性的另一个问题来看,这就是解决方案......
但是,由于自己的要求,这是不允许的...
那么我该如何编写上面的内容,以便我可以检查相等的一致性并相应地处理它呢?
swift - 在 Swift 中将 JSONEncoder 用于 Equatable 方法
我知道 JSON 密钥没有任何顺序并且可以随机生成,但是没有任何东西阻止我编写这个函数,并且从我的测试来看,这适用于我测试的每个用例。
我要解决的问题是为一种类型编写一个函数,该类型具有一个协议的数组,具有大约 20 种不同的实现,我必须实现该==
函数而不是快速自动合成。而且我知道我可以切换到JSONSerialization.writeJSONObject
选项.sortedKeys
以保留键顺序。
这个实现而不是任何其他编写==
函数的方法的缺点是什么?
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 中完成?
ios - Hashable == 方法不能快速检测两个对象之间的差异
我实现了下面的类:
我还定义了这个类的一个对象数组:
接下来,我有以下每秒运行的方法:
这使用此处描述的 DeepDiff 框架:https ://github.com/onmyway133/DeepDiff
我的目标是刷新对数组UICollectionView
所做的更改tables
,但是框架没有检测到更改,即使我的==
方法检查了timeRemaining
和currentPrice
匹配。
swift - 如何让 Sequence 实现 Equatable?
我有以下最佳尝试:
但这似乎不起作用。此外,它要求两个序列具有相同的确切类型,而我只想限制它们的Element
类型相同。有没有办法做到这一点?
swift - 我如何理解这句话“具有相同哈希值的两个实例不一定相等。”
当我阅读 Advanced Swift 一书和“可哈希需求”一章时,我对这个解释感到困惑
两个相等的实例(由您的 == 实现定义)必须具有相同的哈希值。反之则不然:具有相同哈希值的两个实例不一定比较相等。
我如何理解“反向”情况,或者为什么具有相同哈希值的两个实例不一定比较相等。
swift - 如何使用 Equatable 比较基于不同属性的自定义对象?
我正在使用 equatable 协议来比较基于一个名为 的属性的两个自定义对象mediaUID
。
有没有办法在不同属性的比较之间切换?有时我需要按或按likeUID进行
比较。func fetchNotificationsRemoved
mediaUID
swift - 避免 Equatable 和 Hashable 样板,Swift 4.2
在项目中,我们使用模型层的类,因此我必须编写如下代码:
这个样板可以以某种方式避免吗?默认情况下是否可以实现该Equatable
比较?.hashValue
谢谢。