无论相关值如何,都能以某种方式测试枚举案例吗?
enum Abc {
case A(a:Int)
case B(b:Int)
}
let a = Abc.A(a:1)
a == Abc.A // <= Not possible
答案 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 {
...
}