首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在swift中使用协议作为数组类型和函数参数

在swift中使用协议作为数组类型和函数参数
EN

Stack Overflow用户
提问于 2014-07-22 21:21:07
回答 7查看 32.5K关注 0票数 142

我想创建一个可以存储符合特定协议的对象的类。对象应该存储在类型化数组中。根据Swift文档协议可以用作类型:

因为它是一种类型,所以您可以在许多允许其他类型的地方使用协议,包括:

  • 作为函数、方法或初始值设定项中的参数类型或返回类型
  • 作为常量、变量或属性的类型
  • 作为数组、字典或其他容器中的项的类型

但是,以下代码会生成编译器错误:

协议“”SomeProtocol“”只能用作泛型约束,因为它具有自身或关联的类型要求

你应该如何解决这个问题:

代码语言:javascript
复制
protocol SomeProtocol: Equatable {
    func bla()
}

class SomeClass {
    
    var protocols = [SomeProtocol]()
    
    func addElement(element: SomeProtocol) {
        self.protocols.append(element)
    }
    
    func removeElement(element: SomeProtocol) {
        if let index = find(self.protocols, element) {
            self.protocols.removeAtIndex(index)
        }
    }
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24888560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档