![](/img/trans.png)
[英]How to make a protocol extend another protocol and provide default implementation for it in Swift?
[英]Is there a way to make a default implementation on a protocol on Swift?
所以我有這個協議
protocol Syncable {
func sync()
}
然后我想創建另一個實現第一個協議的協議,但也指定其他函數來實現,如下所示:
protocol Repository:Syncable {
func propagateTop()
func propagateLow()
override func sync() {
propagateTop()
propagateLow()
}
}
因此,以這種方式實現Repository
人必須實現這兩個功能,而不需要知道或實現sync
。
無論如何強迫這個?
我嘗試使Repository
成為一個類,並為我想要的每個Repository
創建它的子類,但這並不強制每個子類都應該實現這兩個方法。
是的,你可以寫一個extension
:
protocol Repository: Syncable {
func propagateTop()
func propagateLow()
}
extension Repository {
func sync() {
propagateTop()
propagateLow()
}
}
實現Repository
的類型將獲得sync()
的默認實現。 他們仍然可以提供專門的實施。 但是,該類型將無法在特化中使用默認的Repository.sync
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.