快速扩展协议

时间:2019-05-25 12:16:27

标签: swift kotlin

你好,我想快速实现类似的功能

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
}
}

2 个答案:

答案 0 :(得分:2)

您可以使用 protocol protocol extension 实现所需的功能。

1。。使用2种方法创建一个protocol名称FreeManager

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

目前,method1()method2()都必须由conforming type实施。

2.创建一个protocol extension并实现要制作protocol的{​​{1}}的方法,即

optional

在上面的代码中,我在extension FreeManager { func method2() { print("This is method2()") } } 中实现了method2()。因此,对于protocol extension,现在实现此方法是optionalconforming type仍然是强制实施。

3。。使类method1()SessionManager

FreeManager

在上面的代码中,我仅实现了class SessionManager: FreeManager { func method1() { print("This is method1()") } }

答案 1 :(得分:0)

在Swift中,您可以扩展协议本身:

protocol Foo {
    func bar()
}

extension Foo {
    func bar() {
        print("bar")
    }
}

class Bar: Foo {
}

let bar = Bar()
bar.bar()