我在一个枚举类型上有一个switch case语句,在Swift中有相关的值:
enum Foo {
case Something(let s: Any)
// …
}
我想在模式匹配中使用强制转换,有点像这样:
let foo: Foo = // …
switch foo {
case .Something(let a as? SpecificType):
// …
}
换句话说,我希望案例模式只有在演员成功时才能成功。这可能吗?
答案 0 :(得分:4)
您可以使用where子句:
enum Foo {
case Something(s: Any)
}
let foo: Foo = Foo.Something(s: "test")
switch foo {
case .Something(let a) where a is String:
print("Success")
default:
print("Failed")
}
答案 1 :(得分:2)
您的示例基本上按原样运行:
enum Foo {
case Something(s: Any)
}
let foo = Foo.Something(s: "Success")
switch foo {
case .Something(let a as String):
print(a)
default:
print("Fail")
}
如果你取代"成功"与...它将打印的数字1"失败"代替。这就是你想要的吗?