我可以在Swift协议中实现默认初始化吗
我有各种各样的类,它们都符合一个协议并共享相同的初始化方法。有没有办法在协议中实现初始化?所以我不必在每个类中复制代码。这就是我目前所拥有的我可以在Swift协议中实现默认初始化吗,swift,swift4,dry,Swift,Swift4,Dry,我有各种各样的类,它们都符合一个协议并共享相同的初始化方法。有没有办法在协议中实现初始化?所以我不必在每个类中复制代码。这就是我目前所拥有的 protocol someProtocol { init(data: Data) } class ObjectA: someProtocol { let data: Data required init(data: Data) { self.data = data } } class ObjectB: s
protocol someProtocol {
init(data: Data)
}
class ObjectA: someProtocol {
let data: Data
required init(data: Data) {
self.data = data
}
}
class ObjectB: someProtocol {
let data: Data
required init(data: Data) {
self.data = data
}
}
您不能这样做,因为协议和协议扩展不知道符合它们的对象中的属性,因此无法初始化所有故事属性
我确信关于类型推断还有其他运行时原因,但这一个可能是最简单的解释。所以我想对于我的案例来说,拥有一个基类是一种方式?这取决于您的用例。如果您的每个类都有相同的数据,那么为什么不只拥有一个类呢?我不能说基类是否是一条可行的道路,因为我对您试图实现的目标一无所知。我觉得您试图使用协议的原因是错误的。试着问一个关于你试图解决的问题。我相信会有人(包括我)愿意提供帮助。