如何在Swift的switch语句中捕获可选值的值?

时间:2018-08-27 14:46:18

标签: swift switch-statement

我有一个函数,可以将String解析为BoolDoubleInt,然后返回String。目前,我使用类似if-else的条件

func parse(stringValue: String) {

    if let value = Bool(stringValue) {
        // do something with a Bool
        print(value)

    } else if let value =  Int(stringValue)  {
        // do something with a Int
        print("\(stringValue) is Int: \(value)")
    } else if let value = Double(stringValue) {
        // do something with a Double
        print("\(stringValue) is Double: \(value)")
    } else {
        // do something with a String
        print("String: \(stringValue)")
    }
}

这没关系,但我个人的喜好是在Swift中使用switch语句,但我不知道如何在不强制展开的情况下使用它:

func parse(stringValue: String) {

    switch stringValue {
    case _  where Bool(stringValue) != nil:
        let value = Bool(stringValue)!
        // do something with Bool
    case _ where Int(stringValue) != nil:
        let value = Int(stringValue)!
        // do something with Int
    case _ where Double(stringValue) != nil:
        let value = Double(stringValue)!
        // do something with Double
    default:
        // do something with String
    }
}

如何捕获where的结果,以便可以在case范围内使用它?

0 个答案:

没有答案