【发布时间】:2015-01-24 10:51:14
【问题描述】:
我有一个这样定义的协议:
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。到目前为止,我还没有到任何地方。有什么想法吗?
【问题讨论】: