看起来无法比较Swift中的Enumerations是否相等。这是我期望工作的代码:
let areEqual = MyEnum.SomeEnumValue == MyEnum.SomeEnumValue
但是,这不会编译并抛出错误:Cannot invoke '==' with an argument list of type '(MyEnum, MyEnum)'
。
是否可以使用==
运算符比较2个枚举值,或者我是否真的为此编写了switch-case?
修改
这是包含自我的例子。刚过去它到游乐场,你应该看到编译错误。
import UIKit
enum MyEnum {
case SomeValue(Int)
case OtherValue(Double)
case ThirdValue
}
let areEqual = MyEnum.ThirdValue == MyEnum.ThirdValue
看起来有点像Swift bug,因为它可以比较没有抱怨的没有关联值的Enumerations。所以我希望这不是预期的行为(允许比较一些Enumerations而不是其他的)。
答案 0 :(得分:0)
这对我有用:
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
但你的例子enum有不同的类型。您只能比较分配给他们的各种内容。