[英]Swift extend protocol by
您好,我想快速實施類似的操作
Kotlin示例:
class SessionManager(
private val freeManager: FreeManager
) : FreeManager by freeManager
{
}
這里的FreeManager是接口,我通過構造函數傳遞引用,現在我可以用freeManager編寫擴展部分FreeManager,它不需要我從接口實現所有方法,如何通過協議快速實現類似的功能?
我可以做這樣的事情:
class SessionManager : FreeManager {
init(freeManager: FreeManager) {
// assign freeManager to extended protocol instead of implementing
//all needed methods from protocol
}
}
您可以使用protocol
和protocol extension
來實現所需的protocol extension
。
1.使用兩種方法創建protocol
名稱FreeManager
,
protocol FreeManager {
func method1()
func method2()
}
目前, method1()
和method2()
都必須由conforming type
。
2.
創建一個protocol extension
並實現您要設為optional
的protocol
方法,即
extension FreeManager {
func method2() {
print("This is method2()")
}
}
在上面的代碼中,我在protocol extension
實現了method2()
。 因此,現在對於conforming type
,實現此方法是optional
的。 method1()
仍然是強制實施的。
3.使 SessionManager
類與FreeManager
class SessionManager: FreeManager {
func method1() {
print("This is method1()")
}
}
在上面的代碼中,我僅實現了method1()
。
在Swift中,您可以擴展協議本身:
protocol Foo {
func bar()
}
extension Foo {
func bar() {
print("bar")
}
}
class Bar: Foo {
}
let bar = Bar()
bar.bar()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.