我有一个这样定义的协议:
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
。到目前为止,我还没到任何地方。有任何想法吗?