我有一个带有关联值的Result
枚举:
enum Result {
case success(object: AnyObject)
case failure(errorMessage: String)
case reauthenticate(errorMessage: String)
}
我希望以相同的方式处理failure
和reauthenticate
个案,但也需要访问相关的值。 Swift中是否有语言功能让我在不丢失errorMessage的情况下通过failure
案例?类似的东西:
switch result {
case .success(_):
// ...
case .failure(let errorMessage): fallthrough
case .reauthenticate(let errorMessage:
print(errorMessage)
}
我知道还有其他方法可以解决这个问题。例如,我可以在errorMessage
上添加计算的Result
var。我的问题是它是否可以在switch语句中完成(使用fallthrough
或其他方法)。
答案 0 :(得分:5)
你不能在这里使用fallthrough
,但是可以匹配多个具有关联值的情况,并且只要每个变量绑定的模式匹配,就绑定相关的值,并且每个模式的值绑定共享相同的类型 - 按SE-0043。
因此你可以说:
switch result {
case .success:
print("success")
case .failure(let errorMessage), .reauthenticate(let errorMessage):
print(errorMessage)
}