我正在尝试使用协议为将要实现它们的结构提供某些规范,但是我需要能够使这些通用。
例如:
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] 删除。
我来说两句