在无关紧要的 switch case 中放什么?
What to put in switch cases that have nothing to do?
我开始使用 Result 作为 return 类型,我非常喜欢它,但是当我没有任何东西可以 return 成功时,我不知道在那个 case 语句中该做什么。有什么提示吗?
我能想到的只有let _ = 0
func createAppDirectory(_ searchPath: FileManager.SearchPathDirectory) -> Result<Void,Error>
...
switch createAppDirectory(searchPath) {
case .success(_): let _ = 0
case .failure(let error): return .failure(error)
}
我开始认为当成功类型为 Void 时,Result 可能不太合适。
BTW createAppDirectory 只是创建 Library/Application Support/<Bundle ID>
。如果成功,return 没有任何价值。
使用中断语句:
switch createAppDirectory(searchPath) {
case .success:
break
case .failure(let error): return .failure(error)
}
编辑:
正如 Mojtaba 指出的那样,如果您不打算对枚举的特定情况使用关联值,则可以直接跳过它。我在上面编辑了我的答案以从 .success
案例
中删除 (_)
无视即可:
case .success: break
此外,如果您希望在非故障情况下绝对不过度工作,gaurd
它在范围的最开始:
guard case .failure(let error) = createAppDirectory(searchPath) else { return <#Value#> }
Return 简单无效结果,
switch createAppDirectory(searchPath) {
case .success: return .success(())
case .failure(let error): return .failure(error)
}
如果只是错误很大Result
是不合适的。
更好的模式是 throw
错误和 return 无
func createAppDirectory(_ searchPath: FileManager.SearchPathDirectory) throws
...
do {
try createAppDirectory(searchPath)
} catch { print(error)}
我开始使用 Result 作为 return 类型,我非常喜欢它,但是当我没有任何东西可以 return 成功时,我不知道在那个 case 语句中该做什么。有什么提示吗?
我能想到的只有let _ = 0
func createAppDirectory(_ searchPath: FileManager.SearchPathDirectory) -> Result<Void,Error>
...
switch createAppDirectory(searchPath) {
case .success(_): let _ = 0
case .failure(let error): return .failure(error)
}
我开始认为当成功类型为 Void 时,Result 可能不太合适。
BTW createAppDirectory 只是创建 Library/Application Support/<Bundle ID>
。如果成功,return 没有任何价值。
使用中断语句:
switch createAppDirectory(searchPath) {
case .success:
break
case .failure(let error): return .failure(error)
}
编辑:
正如 Mojtaba 指出的那样,如果您不打算对枚举的特定情况使用关联值,则可以直接跳过它。我在上面编辑了我的答案以从 .success
案例
(_)
无视即可:
case .success: break
此外,如果您希望在非故障情况下绝对不过度工作,gaurd
它在范围的最开始:
guard case .failure(let error) = createAppDirectory(searchPath) else { return <#Value#> }
Return 简单无效结果,
switch createAppDirectory(searchPath) {
case .success: return .success(())
case .failure(let error): return .failure(error)
}
如果只是错误很大Result
是不合适的。
更好的模式是 throw
错误和 return 无
func createAppDirectory(_ searchPath: FileManager.SearchPathDirectory) throws
...
do {
try createAppDirectory(searchPath)
} catch { print(error)}