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

标签 swift enums compiler-errors switch-statement equality

<分区>

看起来 Swift 中的枚举无法进行相等性比较。这是我希望工作的代码:

let areEqual = MyEnum.SomeEnumValue == MyEnum.SomeEnumValue

但是,这不会编译并抛出错误:无法使用类型为“(MyEnum, MyEnum)”的参数列表调用“==”

是否可以使用 == 运算符比较 2 个枚举值,或者我是否真的为此编写了 switch-case?


编辑

这是自包含的例子。将它转到 playground,你应该会看到编译错误。

import UIKit

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

let areEqual = MyEnum.ThirdValue == MyEnum.ThirdValue

看起来有点像 Swift 错误,因为它可以让您比较没有关联值的枚举而不会提示。所以我希望这不是预期的行为(允许比较一些枚举而不是其他枚举)。

最佳答案

这对我有用:

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

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

关于swift - 如何比较相同枚举的值? (== 比较不起作用!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26196522/

相关文章:

ios - SKSpriteNode 在碰撞时失去速度

java - 在构造调用期间将 Java 枚举放入静态映射中是否安全?

c# - 带有枚举的 INotifyPropertyChanged

excel - 编译错误: Sub or function not defined (MRound)

swift - UITabBarController自定义页面顶栏颜色swift

swift - 在 swift 2.3 中使用 "parameters.dataUsingEncoding(NSUTF8StringEncoding)"编码时如何避免 + 号被空格替换

ios - swift - 无需重新加载自定义 UITableViewCell 即可设置 UILabel

java - JDK 7 SE 的 Enum.valueOf 错误,其中 .values() 被损坏

c - main/error :expected ';' , ',' or ')' before numeric constant|中的函数的隐式声明

c++ - ISO C++禁止无类型的 ‘multiset’声明