gpt4 book ai didi

swift - 如何返回用于处理错误条件的 Swift 枚举

转载 作者:可可西里 更新时间:2023-10-31 23:58:09 25 4
gpt4 key购买 nike

我正在尝试在 Swift 中创建一个简单的错误处理结构。我想要做的是返回一个包含“成功”代码或“错误”代码的类型。但为了让它变得有点棘手,在错误情况下,我还想获得一条消息和一个诊断字符串。

我想出了这个,它编译得很好并且在返回成功/错误方面工作得很好:

enum PasswordValidationResult {
case Success
case PasswordError(message: String, diagnostic: String)

func isValid() -> Bool {
switch self {
case .Success:
return true
case .PasswordError:
return false
}
}
}

然后我可以返回所需的值:

return PasswordValidationResult.PasswordError(message: "You can't do that", diagnostic: "XYZ")

当我尝试引用返回值时出现问题。

显然,我可以使用 isValid() 函数来测试成功条件,但我找不到任何引用消息和诊断字符串的语法。

例如,试试这个:

  myError = someFunction()

if myError == PasswordValidationResult.Error {
// None of this will compile, at all...
println(myError.message)
}

最佳答案

您可以使用 switch 提取枚举的关联值:

switch someFunction() {
case .Success:
println("It worked!")
case .PasswordError(let message, let diag):
println(message)
}

switch 做的其他好事中,如果你的情况用尽了所有可能性(如这里 - 枚举必须是两个值之一)你不需要默认值。如果您忘记或遗漏了一个,编译器会警告您。

请注意,您还可以匹配特定值:

switch someFunction() {
case .Success:
println("It worked!")
case .PasswordError("Password invalid", _):
println("Please try again")
case let .PasswordError(message, diag):
// more general error handling
}

关于swift - 如何返回用于处理错误条件的 Swift 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28552710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com