对于符合ModelProtocol
协议的唯一对象,我可以通过编写以下代码来测试泛型是否成功:
if let _ = T.self as? ModelProtocol.Type { /* Do some stuff */}
但是,如果需要测试
[ModelProtocol]
协议的一致性,我会备货充足。我试过了 :if let _ = T.self as? [ModelProtocol.Type] { /* Do some stuff */}
但是Xcode给我一个警告:
始终从“ T.Type”强制转换为无关类型“ [ModelProtocol.Type]”
失败
我应该如何处理这种情况?
最佳答案
您可以使用带有约束的通用函数来执行此操作。例如:
//: Playground - noun: a place where people can play
import Cocoa
protocol ModelProtocol {
var name: String { get }
}
struct Model: ModelProtocol {
let name: String
}
func myFunction<T: Sequence>(sequence: T) where T.Iterator.Element == ModelProtocol {
for model in sequence {
print(model.name)
}
}
let models: [ModelProtocol] = [Model(name: "one"), Model(name: "two")]
myFunction(sequence: models)
关于arrays - 通用符合协议(protocol)数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42486744/