问题标签 [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 - (Swift)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?
我有一个类型为元组 (Date, MyOwnClass) 的数组,并尝试从元组数组中找到等于我的目标元组的特定元组的索引。当我尝试使用“.indexOf({ $0 == targetTuple })”时,XCode 给我错误提示“二进制运算符 == 不能...”
提前致谢!
swift - 为什么 swift 编译器在有/没有 Equatable 协议的情况下使用相等运算符的行为不同
我在 Swift 4.0 的 Playground 中有一个非常简单的类,它覆盖了 == 运算符。
我不明白为什么当类继承/不继承Equatable协议时 Swift 编译器的行为不一样。
这里是继承 Equatable 协议时的类
当此代码执行时,它显示“test1 not equals to test4”。这是预期的行为。
接下来,当我从类中删除“Equatable”协议时
我得到一个编译错误就行了
带有以下消息:“可选类型'测试的值?' 未解包;您的意思是使用“!”还是“?”?
为什么有/没有 Equatable 的行为不同?
事实上,当类从 Equatable 继承时,我也期待同样的编译错误,因为我将非可选与可选进行了比较。
当类继承 Equatable 时,将非可选与可选进行比较是否安全?
swift - swift:为什么在重载“==”运算符时需要符合equatable?
我正在快速学习并阅读有关扩展中的运算符重载的主题,其中包括:
但是我怎么知道我需要采用 Equatable 呢?
我试图删除该协议,并且该功能的工作方式相同。不会报告任何警告或错误。为什么?
ios - 如何根据实现该协议的两个实例的身份为一个协议实现 Equatable 协议?
我正在尝试为基于左右操作数标识的协议实现 Equatable 协议。换句话说:我如何为一个协议实现 Equatable 协议,以确定实现该协议的两个实例(在我的情况下iNetworkSubscriber
)是否相同(相同的对象引用)。像那样(错误消息包含在下面的代码中):
...我还尝试了身份运算符本身:
有人知道如何解决这个问题吗?
ios - `UIStatusBarStyle` 是否相等?
我正在使用一个包含类型属性的结构,UIStatusBarStyle
并且喜欢为此结构使用 Swift 4.1 的“自动等价功能”。
的文档UIStatusBarStyle
显示它是 int 类型的枚举,但没有说“符合 Equatable”。是平等的吗?有这方面的文档吗?
swift - Swift:为什么字典中的键类型必须是 Hashable 类型
如果我想为协议创建一个类型对象,则Dictionary<Key:Value>()
它是必需的。为什么会这样,字典是如何实现的?Key
Hashable
我的意思是我会理解,如果Key
只是需要符合Equatable
类型的协议,因为程序将不得不搜索相关的值,但是,var hashValue: Int
随之而来的额外Hashable
内容有点令人困惑
arrays - 从多维数组中删除重复项
我编写了以下扩展来从我的数组中删除重复项。
线性阵列
多维数组
类型 [Int] 不符合 Equatable
我在这里阅读。答案说使用数组比较==
应该有效。它并不总是有效:
作品
不工作
运算符'=='的模糊使用
这很奇特。我可以比较String
s 数组,但不能比较Int
s 数组。
我也看到了这个评论:
原因myArray1 == myArray2
是NSObject
符合Equatable,调用-[equals:]
进行测试
不确定☝️评论是否仍然有效。
总结一下:
- 数组是等价的吗?我可以使用它们进行比较吗
==
- 为什么比较 Array of
String
s 与 Array ofInt
s不同 - 如何从多维数组中删除重复项?
我目前正在与Swift 4.0.2
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'
什么是正确的语法?
[编辑]简化了示例
[编辑] 更新示例:
swift - 如何使关联值相等的 Swift 枚举
我有一个关联值的枚举,我想将其设为可用于测试目的,但不知道这种模式如何与具有多个参数的枚举案例一起使用。
例如,总结如下,我知道使标题相等的语法。这对于包含不同类型的多个值的选项如何工作?
我知道 Swift 4.1 可以为我们综合 Equatable 的一致性,但目前我无法更新到这个版本。