使用协议作为数组类型和函数参数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

可以尝试下使用这个:

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)
        }
    }
}
提问于
用户回答回答于

已经遇到了Swift协议中的一个问题的变种,目前还没有好的解决方案。

用户回答回答于

可以尝试下这个:

class SomeClass<T: SomeProtocol> {
    typealias ElementType = T
    var protocols = [ElementType]()

    func addElement(element: ElementType) {
        self.protocols.append(element)
    }

    func removeElement(element: ElementType) {
        if let index = find(self.protocols, element) {
            self.protocols.removeAtIndex(index)
        }
    }
}

所属标签

可能回答问题的人

Dingda

Dingda · 站长 (已认证)

LemonLu

社区 · 运营 (已认证)

腾讯云@移动安全

腾讯 · 移动开发工程师 (已认证)

扫码关注云+社区