带有关联值的快速枚举中的等式运算符重载

新星

我知道之前曾问过一个几乎类似的问题,但是我无法对此发表评论,因为我是新来的。这就是我发布分离问题的原因。另外,我的问题是对先前询问的问题的扩展,旨在提供一个更通用的解决方案。那是上一个问题的链接:如何用关联值测试Swift枚举的相等性

我想在带有关联值的枚举中测试相等性:

enum MyEnum {
    case None
    case Error
    case Function(Int) // it is a custom type but for briefness an Int here
    case ...
}

我尝试如下设置重载函数

func ==(a: MyEnum, b: MyEnum) -> Bool {
    switch (a,b) {
    case (.Function(let aa), .Function(let bb)):
        if (aa==bb) {
            return true
        } else {
            return false
        }
    default:
        if (a == b) {
            return true
        } else {
            return false
        }
    }
}

这不会产生编译时错误,但会在运行的进程中以bad_exec失败。很可能是因为在默认情况下测试a == b会再次调用函数本身。.Function部分按预期运行,但其余部分则无法正常运行。因此,案例列表会更长一些,如​​何测试没有关联值的案例是否相等?

马丁·R

在您的实施中,

if (a == b) {

==再次递归调用同一函数。这最终会因堆栈溢出而崩溃。

一个有效的实现例如是:

func ==(a: MyEnum, b: MyEnum) -> Bool {
    switch (a,b) {
    case (.Function(let aa), .Function(let bb)):
        return aa == bb
    case (.Error, .Error):
        return true
    case (.None, .None):
        return true
    default:
        return false
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有运算符重载的字典

来自分类Dev

带有关联值的Swift枚举

来自分类Dev

带有关联值的Swift枚举

来自分类Dev

我可以使用模式匹配运算符〜=将枚举值与具有关联变量的枚举类型进行匹配吗?

来自分类Dev

有关C ++运算符重载的问题

来自分类Dev

如何在Swift中检查带有关联值的枚举的枚举大小写

来自分类Dev

具有关联的活动记录查询中的LIKE运算符

来自分类Dev

Swift枚举运算符重载

来自分类Dev

枚举类型的运算符重载

来自分类Dev

Swift枚举运算符重载

来自分类Dev

重载delete []运算符,带有特定参数

来自分类Dev

带有原始类型的C ++运算符重载

来自分类Dev

从带有+运算符重载的类模板派生

来自分类Dev

如何快速重载赋值运算符

来自分类Dev

带有关系运算符的while循环

来自分类Dev

C ++中的运算符重载带有整数和对象

来自分类Dev

通过带有类型通知的宏在C中重载运算符

来自分类Dev

间接运算符如何返回带有运算符重载的指针地址

来自分类Dev

将带有关联值的枚举存储在NSUserDefaults(Swift)中

来自分类Dev

枚举器运算符重载 C++ 中“&”标记之前的预期初始值设定项

来自分类Dev

在类中重载运算符并返回对私有值的引用

来自分类Dev

快速不等式运算符(!=等效项)

来自分类Dev

& 运算符与 C# 中的枚举值

来自分类Dev

是否有关于ADL的不同规则或关于重载运算符的命名冲突?

来自分类Dev

我无法理解有关重载运算符的此示例

来自分类Dev

函数返回有关重载运算符的错误

来自分类Dev

如何创建带有关联值(如Swift枚举)的Java枚举?

来自分类Dev

Typescript是否有运算符重载?

来自分类Dev

二进制布尔运算符是否具有关联性?

Related 相关文章

热门标签

归档