我有一个Result带有相关值的枚举:
enum Result {
case success(object: AnyObject)
case failure(errorMessage: String)
case reauthenticate(errorMessage: String)
}
Run Code Online (Sandbox Code Playgroud)
我想以相同的方式处理failure和reauthenticate案例,但也需要访问相关的值.Swift中是否有语言功能让我在failure不丢失errorMessage 的情况下完成这个案例?就像是:
switch result {
case .success(_):
// ...
case .failure(let errorMessage): fallthrough
case .reauthenticate(let errorMessage:
print(errorMessage)
}
Run Code Online (Sandbox Code Playgroud)
我知道还有其他方法可以解决这个问题.例如,我可以添加一个计算errorMessagevar Result.我的问题是它是否可以在switch语句中完成(使用fallthrough或其他方法).
您不能fallthrough在此处使用,但是您可以将多个案例与关联值匹配,并且只要每个变量绑定的模式匹配,就绑定关联的值,并且为每个模式绑定的值共享相同的类型(s) - 根据SE-0043.
因此你可以说:
switch result {
case .success:
print("success")
case .failure(let errorMessage), .reauthenticate(let errorMessage):
print(errorMessage)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |