首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何比较相同枚举的值?(==比较不起作用!)

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

Stack Overflow用户
提问于 2014-10-04 19:46:01
回答 1查看 2.1K关注 0票数 4

看起来,Swift中的数字不能在相等性上进行比较。下面是我希望能够工作的代码:

代码语言:javascript
运行
复制
let areEqual = MyEnum.SomeEnumValue == MyEnum.SomeEnumValue

但是,这不会编译并引发错误:Cannot invoke '==' with an argument list of type '(MyEnum, MyEnum)'

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

编辑

下面是自我包含的例子。刚过它到操场,你应该会看到编译错误。

代码语言:javascript
运行
复制
import UIKit

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

let areEqual = MyEnum.ThirdValue == MyEnum.ThirdValue

看起来有点像Swift bug,因为它允许您比较没有抱怨的没有关联值的数字。因此,我希望这不是预期的行为(允许比较一些数字,而不是其他)。

EN

回答 1

Stack Overflow用户

发布于 2014-10-04 20:04:29

这对我来说很管用:

代码语言:javascript
运行
复制
enum CompassPoint {
    case North
    case South
    case East
    case West
}

let isEqual = CompassPoint.North ==  CompassPoint.South
//false

另一个例子是:

代码语言:javascript
运行
复制
enum CompassPoint: Int {
    case North = 1, South, East, West
}

let isEqual = CompassPoint.North ==  CompassPoint.South
//false

这也将起作用:

代码语言:javascript
运行
复制
enum MyEnum {
    case SomeValue
    case OtherValue
    case ThirdValue
}


let areEqual = MyEnum.ThirdValue == MyEnum.ThirdValue

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26196522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档