是否有一种简单快捷的方式来匹配案例陈述中的确切类?

时间:2015-04-19 22:20:54

标签: swift

我做到了:

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
    }
}

正如您所期望的那样,MyClassYourClass的类和子类会导致相关的打印语句被执行。

但是,我有一个案例,我希望它匹配一个确切的类(不是该类的任何子类)。理想情况下,我想要像case let myObj as MyClass:行一样简单而优雅的东西,类似于case let myObj as exactly MyClass:。在Swift中这样的事情可能吗?否则,在案例陈述中实现这一目标的最优雅和简洁的方法是什么?

1 个答案:

答案 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