Swift 如何比较同一枚举的值?(==比较不起作用!)

Swift 如何比较同一枚举的值?(==比较不起作用!),swift,enums,compiler-errors,switch-statement,equality,Swift,Enums,Compiler Errors,Switch Statement,Equality,看起来无法比较Swift中的枚举是否相等。以下是我希望能够使用的代码: let areEqual = MyEnum.SomeEnumValue == MyEnum.SomeEnumValue 但是,这不会编译并引发错误:无法使用类型为“(MyEnum,MyEnum)”的参数列表调用“==” 是否可以使用==运算符比较2个枚举值,或者我是否真的为此编写了开关大小写 编辑 下面是一个自包含的示例。刚过它到游乐场,您应该会看到编译错误 import UIKit enum MyEnum {

看起来无法比较Swift中的枚举是否相等。以下是我希望能够使用的代码:

let areEqual = MyEnum.SomeEnumValue == MyEnum.SomeEnumValue
但是,这不会编译并引发错误:
无法使用类型为“(MyEnum,MyEnum)”的参数列表调用“==”

是否可以使用
==
运算符比较2个枚举值,或者我是否真的为此编写了开关大小写


编辑

下面是一个自包含的示例。刚过它到游乐场,您应该会看到编译错误

import UIKit

enum MyEnum {
    case SomeValue(Int)
    case OtherValue(Double)
    case ThirdValue
}

let areEqual = MyEnum.ThirdValue == MyEnum.ThirdValue
看起来有点像Swift bug,因为它允许您比较没有关联值的枚举,而无需抱怨。因此,我希望这不是预期的行为(允许比较某些枚举,但不允许比较其他枚举)。

这对我来说很有效:

enum CompassPoint {
    case North
    case South
    case East
    case West
}

let isEqual = CompassPoint.North ==  CompassPoint.South
//false
另一个例子:

enum CompassPoint: Int {
    case North = 1, South, East, West
}

let isEqual = CompassPoint.North ==  CompassPoint.South
//false
这也将有助于:

enum MyEnum {
    case SomeValue
    case OtherValue
    case ThirdValue
}


let areEqual = MyEnum.ThirdValue == MyEnum.ThirdValue

但您的示例中,枚举有不同的类型。您只能比较分配给他们的各种问题。

我无法重现该问题。您是否可以显示一个(最少)完整、自包含的示例(包括枚举定义)?(我)也不清楚你是想比较枚举常量还是变量的值。你能发布完整的代码吗?@Martin R正在研究。请稍等。@MinnesotaSteve请检查我的edit@drasto:
MyEnum.ThirdValue
是类型为
MyEnum
的表达式,如对可能重复的答案所述,
==
不适用于具有关联值的枚举。你可以在苹果公司提交一份bug报告,但我们无法解释为什么Swift人员没有实施它。请查看我的编辑,了解哪些不起作用。请考虑删除这个答案,因为它解决了原问题中所陈述的问题。