我有一个使用泛型的协议:
protocol DataService {
associatedtype T
var getData: ((T) -> Void)? { get set }
}
我试图在初始化程序中用作参数:
class MyProvider {
var service: DataService
init(service: DataService) {
self.service = service
}
}
但是,我不断得到:
Protocol 'DataService' can only be used as a generic constraint because it has Self or associated type requirements
我尝试了下面的代码,但是没有用:
init<T: String>(service: DataService) {
self.service = service
}
答案 0 :(得分:2)
您可以改为创建通用类:
class MyProvider<T> where T: DataService {
var service: T
init(service: T) {
self.service = service
}
}