Как зафиксировать значение опций в операторе switch в Swift? - PullRequest
0 голосов
/ 27 августа 2018

У меня есть функция, где я анализирую String в Bool, Double или Int, прежде чем вернуться к 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)")
    }
}

Это нормально, но я предпочитаю использовать операторы switch в Swift, но я не знаю, как это сделать без распаковки:

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...