所以我有这个协议(protocol)
protocol Syncable {
func sync()
}
然后我想创建另一个协议(protocol)来实现第一个协议(protocol),但也指定要实现的其他功能,如下所示:
protocol Repository:Syncable {
func propagateTop()
func propagateLow()
override func sync() {
propagateTop()
propagateLow()
}
}
因此,通过这种方式,实现Repository
的人必须实现这两个功能,而无需了解或实现sync
功能。
有没有办法强制执行此操作?
我试着让 Repository
成为一个类,并为我想要的每个 Repository
创建它的子类,但这并不强制每个子类都应该实现这 2 个方法。
最佳答案
是的,你可以写一个扩展
:
protocol Repository: Syncable {
func propagateTop()
func propagateLow()
}
extension Repository {
func sync() {
propagateTop()
propagateLow()
}
}
实现Repository
的类型将获得sync()
的默认实现。他们仍然可以提供专门的实现。但是,该类型将无法在特化中使用默认的 Repository.sync
。
关于swift - 有没有办法在 Swift 中对协议(protocol)进行默认实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37443476/