Swift 如何比较同一枚举的值?(==比较不起作用!)
看起来无法比较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 {
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人员没有实施它。请查看我的编辑,了解哪些不起作用。请考虑删除这个答案,因为它解决了原问题中所陈述的问题。