无论相关值如何,都要比较Swift枚举

时间:2016-06-14 09:32:06

标签: swift enums swift2

无论相关值如何,都能以某种方式测试枚举案例吗?

enum Abc {
    case A(a:Int)
    case B(b:Int)
}

let a = Abc.A(a:1)

a == Abc.A  // <= Not possible 

2 个答案:

答案 0 :(得分:4)

当然,您可以在switch

中执行此操作
switch a {
case .A:
    print("it's A")
default:
    print("it's not A")
}

或者在if语句中使用模式匹配:

if case .A = a {
    print("it's A")
} else {
    print("it's not A")
}

如果您在匹配案例后仍然对相关值感兴趣,可以像这样提取它:

switch a {
case .A(let value):
    ...
}

if case .A(let value) = a {
    ...
}

请注意@overactor's comment below您也可以将其写为case let .A(value) - 这主要取决于个人偏好。

答案 1 :(得分:1)

您可以使用if case

enum ABC {
    case A(a: Int)
    case B(b: Int)
}

let a = ABC.A(a: 1)

if case .A = a {
    ...
}