簡體   English   中英

快速擴展協議

[英]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
}
}

您可以使用protocolprotocol extension來實現所需的protocol extension

1.使用兩種方法創建protocol名稱FreeManager

protocol FreeManager {
    func method1()
    func method2()
}

目前, method1()method2()都必須由conforming type

2.創建一個protocol extension並實現您要設為optionalprotocol方法,即

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM