我有一个函数,可以将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)")
}
}
这没关系,但我个人的喜好是在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
范围内使用它?