У меня есть функция, где я анализирую 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
?