看起来,Swift中的数字不能在相等性上进行比较。下面是我希望能够工作的代码:
let areEqual = MyEnum.SomeEnumValue == MyEnum.SomeEnumValue但是,这不会编译并引发错误:Cannot invoke '==' with an argument list of type '(MyEnum, MyEnum)'。
是否可以使用==操作符比较两个枚举值,或者我是否真的为此编写了开关大小写?
编辑
下面是自我包含的例子。刚过它到操场,你应该会看到编译错误。
import UIKit
enum MyEnum {
case SomeValue(Int)
case OtherValue(Double)
case ThirdValue
}
let areEqual = MyEnum.ThirdValue == MyEnum.ThirdValue看起来有点像Swift bug,因为它允许您比较没有抱怨的没有关联值的数字。因此,我希望这不是预期的行为(允许比较一些数字,而不是其他)。
发布于 2014-10-04 20:04:29
这对我来说很管用:
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但是你的例子枚举有不同的类型。您将只能比较各种分配给他们。
https://stackoverflow.com/questions/26196522
复制相似问题