我们为什么要使用扩展名?

问题描述 投票:0回答:1

我刚刚了解了扩展,我想知道,有一个有关扩展协议的示例,因为exmaple可以说我们有协议:

protocol CanFly {
    func canFly()
}

这允许所有可以飞行的类基本上都可以飞行..现在可以说我们使用扩展来扩展协议,然后执行:

extension CanFly {
    func canEat() {
        print("I can eat")
    }
}

这的目的是什么,如果我们可以仅将func canEat添加到我们的协议中,那么更多的协议就像一个抽象结构,为什么我们要向其中添加带主体的func?

  • [只是想说一下我是否为此感到很抱歉,只想清除关于扩展<3的几件事
swift swift-extensions
1个回答
0
投票

根据Protocol Extensions上的Swift文档:

协议可以扩展为提供方法,初始化程序,下标,以及将属性实现计算为符合标准的类型。这允许您可以定义协议本身的行为,而不是每个协议类型的个人符合性或全局功能。

这意味着您可以运行逻辑在协议扩展功能内,因此您不必在符合协议的每个类中都进行此操作。

个人,我还发现扩展对于扩展诸如String或UIViewController之类的内置类的功能很有用,因为可以从应用程序中的任何位置调用扩展。我有一些开源扩展snippets,如果您愿意,可以看看。

© www.soinside.com 2019 - 2024. All rights reserved.