问题描述
我写了一个具有两种关联类型的协议。当我想在函数的默认实现中创建关联类型之一的实例时,编译器会抱怨:“表达式的类型不明确,没有更多上下文”
protocol Node: Equatable {
associatedtype Identifier: Equatable
associatedtype SomeEdge: Edge
var identifier: Identifier { get }
var edges: [SomeEdge] { get set }
init(_ identifier: Identifier)
mutating func addEdge(to: Self)
mutating func delete(_: SomeEdge)
}
extension Node {
mutating func addEdge(to other: Self) {
let edge = SomeEdge(source: self,destination: other) // Type of expression is ambiguous without more context
guard !edges.contains(edge) else {
return
}
edges.append(edge)
}
mutating func delete(_ edge: SomeEdge) {
guard let index = edges.firstIndex(of: edge) else {
return
}
edges.remove(at: index)
}
}
如何解决此问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)