问题标签 [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 - 为自定义私有类实现 Equatable - Swift
我知道如何为非私有类实现 Equatable (通过编写 == 运算符函数),但是鉴于“仅在全局范围内允许运算符”,这对私有类不起作用。问题是,在全局范围内,私有类是不可见的,那么我该如何实现它的 == 运算符..?
错误:使用未声明的类型 Foo
ios - 测试定义为 Any 的值的数组包含,但保证为相同类型。
基于我的这个问题(以及公认的答案),我想测试数组中值的包含情况。
该值存储在类型定义为 的变量中Any
,数组定义为[Any]
。
变量中存储的值的实际类型和数组中的元素在运行时决定,但保证满足以下条件:
- 两种类型(变量和数组元素)重合,并且
- 它们是或
String
之一。Int
Bool
到目前为止,我得到了这段代码:
但是,有很多逻辑重复,我希望我可以让它更聪明,也许是这样的:
...但是对使用协议的限制Equatable
阻碍了。有什么建议吗?
swift - Swift - 具有等价变量的结构
我正在尝试实现一个结构,它是 Equatable 并且有一个 AnyObject 类型的变量(在本例中为“variable2”),它可能是或不是 equatable。
起初我试图检查 variable2 是否符合 Equatable 协议,但这样做我得到一个编译错误。
在另一种方法上,我尝试将 ' variable2
' 更改为,Equatable
但即便如此,我仍然有一个错误告诉我它只能用作通用约束。
我尝试了一些不同的方法,但没有设法让它工作。有没有人对此有解决方案?解决第一种情况将是最好的情况,但第二种情况也可能满足我的需求。
swift - 二元运算符“==”不能应用于两个操作数
我有一个带有协议的课程Equatable
。该类如下所示:
但这给了我错误(见标题)。该物业item
是[[String: String]]
以前的,没有问题,我不知道如何解决这个问题。我尝试在整个 SO 上进行谷歌搜索和搜索,但没有运气..
枚举只是一个简单的基本枚举:
swift - 比较 Swift 中的枚举
我有一个包含两个这样的枚举的类(变得简单):
现在我想编写一个通用函数,它接受 UserError 或 BackendError 并根据输入返回一个字符串。像这样的东西:
我的第一种方法是使用泛型——但坦率地说,我很难理解这个概念,而且我有一种倾向,我在这里根本就错了。我所做的是:
显然,这是行不通的。
我知道这与缺少实现 Equatable/Comparable 协议以及我对使用泛型的普遍缺乏了解有关。我的问题是:
如何将我的通用“类型”参数与我的枚举进行比较?
我对泛型的理解完全错误吗?
另外:我想避免这种AnyObject
方法。
ios - 为什么必须将协议运算符实现为全局函数?
我已经看到了这个Swift Equatable Protocol问题的答案,其中提到了==
必须如何在全局范围内声明该方法。
如果我不采用Equatable
,我仍然可以声明==
测试我的两种类型之间的相等性。
事实上,它的实现需要在全局范围内声明,这使得它看起来与协议无关,即使Equatable
被采用。
Equatable
协议除了让(我们和)编译器安全地知道我们的类型实现了协议所需的方法之外,还有什么比语法糖更重要的东西吗?
为什么必须全局声明操作符实现,即使对于协议也是如此?这是由于派遣操作员的某种不同方式造成的吗?
swift - 当我扩展 CollectionType 时,Swift 不会调用我的“==”运算符重载
我有一个自定义类(VotingOption),它继承自NSManagedObject
,有时我想检查数组中的某些投票选项是否重复。我试图使我的代码尽可能通用。这是我为扩展 CollectionType 协议所做的:
这就像一个魅力,除了它没有使用全局函数:
当我做这样的事情时:
当我像这样在 VotingOption 中扩展 isEqual 时:
应用程序崩溃并指向 AppDelegate 并显示“libc++abi.dylib:以 NSException 类型的未捕获异常终止”错误
如何告诉 CollectionType 中的“==”使用 VotingOption 的全局函数?
swift - Swift 2 通用数据结构不符合 Equatable 协议
我正在努力在 Swift 中构建一个名为 Node 的灵活数据结构,它本身不依赖于任何类型的内容。但是,Node 中的 Payload 数据被声明为以下符合 Equatable 协议的通用 Element 结构:
约束是 Element 必须绑定到可等价的类类型。我遇到的问题是包含此元素的节点。该节点将用于字典、数组或任何其他容器类型。这是我所拥有的:
当然,我得到了 AnyObject 不符合 Equatable 的错误。有什么方法可以将有效负载的声明限制为仅可等同的对象?此时,我不知道payload中可能存储了什么样的对象。
也刚刚意识到我需要在 Node 中的 == 函数中进行类检查,以确保两个 Node 有效负载兼容以进行比较——不需要它们。
想法?谢谢!
swift - Overridden == function for Equatable type not called for custom class that subclasses NSCoding and NSObject
The FooBar
class below has to override the ==
function of the Equatable
type.
However, calling contains
on an array of FooBar
objects does not cause a breakpoint inside the custom ==
function to get invoked. Is it possible another ==
function is overriding this custom one?
Note: Because FooBar must subclass from NSCoding and NSObject, FooBar does not list Equatable as a protocol because it causes this error:
Redundant conformance of 'FooBar' to protocol 'Equatable'
swift - RealmObject Equatable 冗余消息
我们有一个简单的类Person
,它来自领域Object
。现在我们希望该子类符合Equatable
协议。非常简单的代码如下所示。
我们从领域版本 0.98.8 开始,一切正常。当我们更新到版本 0.102.0(以及其他版本)时,会出现编译器错误消息
不足为奇,如果降级回 0.98.8 版,错误仍然存在。另一个奇怪的行为,在我们的一台开发人员机器上,相同的代码编译得很好。
经过一些研究,我们不知道发生了什么以及如何修复或解决此问题。