从下面的代码:

import Foundation

func checkStatus(statusObj: AnyObject) -> String {
    if let status = statusObj as? String where status.lowercaseString == "ok" {
        return "success"
    } else if let status = statusObj as? Int where status >= 200 && status < 300 {
        return "success"
    } else {
        return "failed"
    }
}

print(checkStatus("ok"))
print(checkStatus(200))
print(checkStatus("error"))
print(checkStatus(500))


有没有办法将两个成功条件组合成一个陈述?

最佳答案

我最终使用switch和fallthrough编写了这种代码:

func checkStatus(statusObj: AnyObject) -> String {
    switch statusObj {
    case let status as Int where 200..<300 ~= status:
        fallthrough
    case "ok" as String:
        return "success"
    default:
        return "failed"
    }
}


我不得不撤消测试,因为在let的情况下失败无法解决。

关于swift - 转换和检查多种类型的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34378525/

10-09 16:28