如何快速创建依赖的通用协议

杰克·奥尔蒂斯(Jake Ortiz)

我正在尝试使用协议为将要实现它们的结构提供某些规范,但是我需要能够使这些通用。

例如:

protocol NodeType {
}

protocol EdgeType {
  var fromNode: NodeType
  var toNode: NodeType
}

问题是两个节点可能是实现协议NodeType的不同结构类型

在一个完美的世界中,我需要这样做:

protocol EdgeType<T: NodeType> {
  var fromNode: T
  var toNode: T
}

确保两个节点都是相同的类或结构类型

目前有可能迅速发生这种情况吗?提前致谢

阿卡西夫斯基

您应该看一下“关联类型”它们是协议的泛型。

protocol NodeType {

}

protocol EdgeType {

    associatedtype Node: NodeType

    var fromNode: Node { get }
    var toNode: Node { get }

}

然后,您可以EdgeType通过指定具体NodeType实现来遵循

struct MyNode: NodeType {

}

struct MyEdge: EdgeType {

    associatedtype Node = MyNode

    var fromNode: MyNode {
        return MyNode()
    }

    var toNode: MyNode {
        return MyNode()
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章