如何解决Swift相关类型不明确
我写了一个具有两种关联类型的协议。当我想在函数的默认实现中创建关联类型之一的实例时,编译器会抱怨:“表达式的类型不明确,没有更多上下文”
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 举报,一经查实,本站将立刻删除。