我做到了:
func doSomething(anObject: AnyObject)
{
switch anObject {
case let myObj as MyClass:
println("Is a kind of MyClass")
case let yourObj as YourClass:
println("Is a kind of YourClass")
default:
break
}
}
正如您所期望的那样,MyClass
或YourClass
的类和子类会导致相关的打印语句被执行。
但是,我有一个案例,我希望它匹配一个确切的类(不是该类的任何子类)。理想情况下,我想要像case let myObj as MyClass:
行一样简单而优雅的东西,类似于case let myObj as exactly MyClass:
。在Swift中这样的事情可能吗?否则,在案例陈述中实现这一目标的最优雅和简洁的方法是什么?
答案 0 :(得分:2)
class A {}
class B: A {}
let b = B()
let b_is_exactly_a = b.dynamicType === A.self // false
let b_is_exactly_b = b.dynamicType === B.self // true
let b_is_a = b is A // true
let b_is_b = b is B // true