在无关紧要的 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)}