问题标签 [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 回答
220 浏览

swift - (Swift)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?

我有一个类型为元组 (Date, MyOwnClass) 的数组,并尝试从元组数组中找到等于我的目标元组的特定元组的索引。当我尝试使用“.indexOf({ $0 == targetTuple })”时,XCode 给我错误提示“二进制运算符 == 不能...”

提前致谢!

0 投票
2 回答
144 浏览

swift - 为什么 swift 编译器在有/没有 Equatable 协议的情况下使用相等运算符的行为不同

我在 Swift 4.0 的 Playground 中有一个非常简单的类,它覆盖了 == 运算符。

我不明白为什么当类继承/不继承Equatable协议时 Swift 编译器的行为不一样。

这里是继承 Equatable 协议时的类

当此代码执行时,它显示“test1 not equals to test4”。这是预期的行为。

接下来,当我从类中删除“Equatable”协议时

我得到一个编译错误就行了

带有以下消息:“可选类型'测试的值?' 未解包;您的意思是使用“!”还是“?”?

为什么有/没有 Equatable 的行为不同?

事实上,当类从 Equatable 继承时,我也期待同样的编译错误,因为我将非可选与可选进行了比较。

当类继承 Equatable 时,将非可选与可选进行比较是否安全?

0 投票
1 回答
3801 浏览

swift - swift:为什么在重载“==”运算符时需要符合equatable?

我正在快速学习并阅读有关扩展中的运算符重载的主题,其中包括:

但是我怎么知道我需要采用 Equatable 呢?

我试图删除该协议,并且该功能的工作方式相同。不会报告任何警告或错误。为什么?

0 投票
2 回答
1512 浏览

ios - 如何根据实现该协议的两个实例的身份为一个协议实现 Equatable 协议?

我正在尝试为基于左右操作数标识的协议实现 Equatable 协议。换句话说:我如何为一个协议实现 Equatable 协议,以确定实现该协议的两个实例(在我的情况下iNetworkSubscriber)是否相同(相同的对象引用)。像那样(错误消息包含在下面的代码中):

...我还尝试了身份运算符本身:

有人知道如何解决这个问题吗?

0 投票
2 回答
2373 浏览

swift - 二元运算符'=='不能应用于两个'Equatable'操作数......什么?

您可以在下图中看到,我试图扩展Collection协议以包含一个名为 的方法removingDuplicates,该方法应该完全按照它所说的那样做。编译器显示的错误似乎与Equatable协议的定义直接矛盾。这是一个错误还是我误解了什么?

在此处输入图像描述

0 投票
1 回答
37 浏览

ios - `UIStatusBarStyle` 是否相等?

我正在使用一个包含类型属性的结构,UIStatusBarStyle并且喜欢为此结构使用 Swift 4.1 的“自动等价功能”。

的文档UIStatusBarStyle显示它是 int 类型的枚举,但没有说“符合 Equatable”。是平等的吗?有这方面的文档吗?

0 投票
1 回答
740 浏览

swift - Swift:为什么字典中的键类型必须是 Hashable 类型

如果我想为协议创建一个类型对象,则Dictionary<Key:Value>()它是必需的。为什么会这样,字典是如何实现的?KeyHashable

我的意思是我会理解,如果Key只是需要符合Equatable类型的协议,因为程序将不得不搜索相关的值,但是,var hashValue: Int随之而来的额外Hashable内容有点令人困惑

0 投票
2 回答
928 浏览

arrays - 从多维数组中删除重复项

我编写了以下扩展来从我的数组中删除重复项。

线性阵列

多维数组

类型 [Int] 不符合 Equatable

在这里阅读。答案说使用数组比较==应该有效。它并不总是有效:

作品

不工作

运算符'=='的模糊使用

这很奇特。我可以比较Strings 数组,但不能比较Ints 数组。

我也看到了这个评论

原因myArray1 == myArray2NSObject符合Equatable,调用-[equals:]进行测试

不确定☝️评论是否仍然有效。

总结一下:

  • 数组是等价的吗?我可以使用它们进行比较吗==
  • 为什么比较 Array of Strings 与 Array of Ints不同
  • 如何从多维数组中删除重复项?

我目前正在与Swift 4.0.2

0 投票
1 回答
990 浏览

swift - Swift:类型符合 Equatable 的泛型数组

在 Swift 中,如何定义类型符合 Equatable 的泛型数组?

例子:

→ 对泛型“文件”的引用需要 <...> 中的参数

…到目前为止,我尝试过:

[File<Any>]

→ 类型 'Any' 不符合协议 'Equatable'


[File<Any: Equatable>]

→ 一行上的连续声明必须用';'分隔


[File<Any, Equatable>]

→ 泛型类型“文件”专用于太多类型参数(得到 2,但预期为 1)


[File<Any & Equatable>]

→ 不支持使用 'Equatable' 作为符合协议 'Equatable' 的具体类型


[File<(Any: Equatable)>]

→ 无法创建带有元素标签的单元素元组


[File<(Any, Equatable)>]

→ 类型 '(Any, Equatable)' 不符合协议 'Equatable'`


[File<(Any & Equatable)>]

→ 不支持使用 'Equatable' 作为符合协议 'Equatable' 的具体类型


[File<[Any: Equatable]>]

→ 'File' 要求 'Equatable' 符合 'Equatable'


[File<[Any, Equatable]>]

→ 一行上的连续声明必须用';'分隔


[File<[Any & Equatable]>]

→ 'File' 要求 'Equatable' 符合 'Equatable'


什么是正确的语法?


[编辑]简化了示例


[编辑] 更新示例:

0 投票
4 回答
24527 浏览

swift - 如何使关联值相等的 Swift 枚举

我有一个关联值的枚举,我想将其设为可用于测试目的,但不知道这种模式如何与具有多个参数的枚举案例一起使用。

例如,总结如下,我知道使标题相等的语法。这对于包含不同类型的多个值的选项如何工作?

我知道 Swift 4.1 可以为我们综合 Equatable 的一致性,但目前我无法更新到这个版本。