协议变量实现另一个协议

时间:2018-03-29 10:56:01

标签: swift swift-protocols

我正在尝试做类似的事情,但是,Parent不符合children,因为Child成员不是ChildC而是ChildC 1}}

这很奇怪,因为Child实现了protocol Parent: Codable { var children: [Child] { get } } protocol Child: Codable { var name: String { get } } struct ParentC: Parent { var children: [ChildC] } struct ChildC: Child { var name: String } ...

这是Swift的限制吗?或者有办法做到这一点吗?

(我不要求替代解决方案,我想知道这个是否可行)

find_element_by_xpath

1 个答案:

答案 0 :(得分:1)

您可以解决此差异"限制"通过使Parent具有关联类型的协议:

protocol Parent: Codable {
    associatedtype ChildType: Child
    var children: [ChildType] { get }
}

这会影响您可以使用Parent的地方,因为具有关联类型的协议对使用它们的位置有一些限制。