如何检查一个泛型类型是否是Swift中其他泛型类型的子类?

时间:2016-07-16 19:06:22

标签: swift generics

我们如何在Swift中检查一个泛型类型是从其他类型继承的?

我有这段代码:

class Style<U: Styleable> {
    ...
    init<V: Styleable>(_ style: Style<V>) {
        ...
    }
}

我需要在init中确保只有在UV的子类时才能调用它。我不知道在编译时检查这个问题的任何方法--Swift不允许(但可能?)将一个泛型类型约束为other的子类。所以我唯一能做的就是使用一些断言,以便在以错误的方式使用程序时崩溃。

您对如何解决这个问题有什么建议吗?

1 个答案:

答案 0 :(得分:1)

好吧,我找到了答案。它非常接近: assert(U.self is V.Type)