泛型 – Swift:检查泛型类型是否符合协议
发布时间:2020-12-14 06:01:24 所属栏目:百科 来源:网络整理
导读:我有一个协议,我定义如下: protocol MyProtocol { ...} 我也有一个通用结构: struct MyStruct T { ...} 最后我有一个通用的功能: func myFunc T (s: MyStructT) - T? { ...} 我想测试内部的函数,如果类型T符合MyProtocol。基本上我想要能够做(?pseudoco
我有一个协议,我定义如下:
protocol MyProtocol { ... } 我也有一个通用结构: struct MyStruct <T> { ... } 最后我有一个通用的功能: func myFunc <T> (s: MyStruct<T>) -> T? { ... } 我想测试内部的函数,如果类型T符合MyProtocol。基本上我想要能够做(?pseudocode): 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是MyProtocol.self,T是MyProtocol,并使用==而不是。到目前为止我还没有到任何地方。有任何想法吗?
有点晚,但你可以测试是否有一些响应协议为?测试:
if let currentVC = myViewController as? MyCustomProtocol { //currentVC responds to the MyCustomProtocol protocol =] } 编辑:有点较短: if let _=self as? MyProtocol { // match } 和使用警卫 guard let _=self as? MyProtocol else { // doesn't match return } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |