所以我有这个协议
protocol Syncable {
func sync()
}
然后我想创建另一个实现第一个协议的协议,但是还指定了其他要实现的功能:
protocol Repository:Syncable {
func propagateTop()
func propagateLow()
override func sync() {
propagateTop()
propagateLow()
}
}
因此,通过这种方式,实现Repository
的人必须实现这两个功能,而无需了解或实现sync
。
无论如何强迫这个?
我尝试将Repository
作为一个类,并为我想要的每个Repository
创建它的子类,但这并不强制每个子类都应该实现这两个方法。
答案 0 :(得分:3)
是的,你可以写一个extension
:
protocol Repository: Syncable {
func propagateTop()
func propagateLow()
}
extension Repository {
func sync() {
propagateTop()
propagateLow()
}
}
实施Repository
的类型将获得sync()
的默认实现。他们仍然可以提供专门的实施。但是,该类型将无法在专业化中使用默认的Repository.sync
。