对于符合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]'总是 失败
我该如何处理这个案子?
答案 0 :(得分:0)
您可以使用带约束的通用函数来执行此操作。例如:
//: 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)