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

时间:2014-10-04 19:46:01

标签: swift enums compiler-errors switch-statement equality

看起来无法比较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而不是其他的)。

1 个答案:

答案 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有不同的类型。您只能比较分配给他们的各种内容。