2
不管关联值是否可以测试枚举case?无论相关值如何比较Swift枚举
enum Abc {
case A(a:Int)
case B(b:Int)
}
let a = Abc.A(a:1)
a == Abc.A // <= Not possible
不管关联值是否可以测试枚举case?无论相关值如何比较Swift枚举
enum Abc {
case A(a:Int)
case B(b:Int)
}
let a = Abc.A(a:1)
a == Abc.A // <= Not possible
当然,你可以做到这一点在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)
- 这主要是个人喜好的问题。
您可以使用if case
enum ABC {
case A(a: Int)
case B(b: Int)
}
let a = ABC.A(a: 1)
if case .A = a {
...
}
'if if'支持某种方式还有'a'是一个可选的ABC的情况吗?' –
@MatthieuRiegler当然,你只需在模式后添加一个问号来匹配任意值,例如'if case .A(let值)? = a'或'if case .A? = a' – Hamish
既然你要做的是非常详尽的回答,可能需要补充的是,let也可以在case后面,并且可以匹配包含特定值的枚举。即'如果情况.A(a:1)' – overactor