在swift中,如果变量属于某种类型,if let语法只允许我执行语句。例如
class A {...}
class B: A {...}
class C: A {...}
func foo(thing: A) {
if let b = thing as? B {
// do something
}else if let c = thing as? C {
// do something else
}
}
是否可以通过switch语句实现这一目标?
我已经做到这一点,但变量b和c仍然是A类型,而不是转换为B和C:
func foo(thing: A) {
switch thing {
case let b where b is B:
// do something
case let c where c is C:
// do something else
default:
// do something else:
}
}
答案 0 :(得分:12)
如果你只想知道它是B还是C,你可以说case is B
和case is C
。
如果您想要捕获并删除,请说出case let b as B
和case let c as C
。