在无关的情况下该如何处理?

时间:2019-08-05 15:38:47

标签: swift switch-statement resulttype

我开始使用Result作为返回类型,并且我最喜欢它,但是当我没有任何要成功返回的内容时,我就无所适从该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可能不合适。

顺便说一句createAppDirectory仅创建Library/Application Support/<Bundle ID>。如果成功,则没有返回值。

4 个答案:

答案 0 :(得分:3)

使用break语句:

switch createAppDirectory(searchPath) {
case .success: 
  break
case .failure(let error): return .failure(error)
}

编辑:

正如Mojtaba所指出的,如果您不打算为枚举的特定情况使用关联的值,则可以直接跳过它。我已经修改了上面的答案,从(_)案例中删除了.success

答案 1 :(得分:3)

只需忽略它:

count_of_masterfolder = len(folder["Master folder"])
count_of_childfolder = len(folder["Child folder"])

如果在故障情况下绝对不希望过度劳累,请在作用域的开始处case .success: break

gaurd

答案 2 :(得分:1)

如果只有严重错误,Result是不合适的。

更好的模式是throw错误并且什么也不返回

func createAppDirectory(_ searchPath: FileManager.SearchPathDirectory) throws

...

do {
    try createAppDirectory(searchPath)
} catch { print(error)}

答案 3 :(得分:0)

返回简单的无效结果,

CheckConstraint