我有一个协议,我是这样定义的:
protocol MyProtocol {
...
}
我还有一个泛型结构:
struct MyStruct <T> {
...
}
最后,我有一个通用函数:
func myFunc <T> (s: MyStruct<T>) -> T? {
...
}
我想在函数内部测试 T 类型是否符合 MyProtocol。本质上我希望能够做(~ 伪代码) :
let conforms = T.self is MyProtocol
但这会抛出一个编译器错误:
error: cannot downcast from 'T.Type' to non-@objc protocol type 'MyProtocol'
let conforms = T.self is MyProtocol
~~~~~~ ^ ~~~~~~~~~~
我也尝试了不同的变化,如 T.self is MyProtocol.self
,T is MyProtocol
,并使用 ==
而不是 is
。目前为止我还没有任何进展。有什么想法吗?