所以我想知道是否有人能解释这个错误背后的理由或解释我做错了什么。Swift通用类型推理
我想创建一个通用函数,它需要一个协议约束类型,它有一个静态方法称为求解。
但由于某些原因,即使它解决了Xcode中的约束问题,编译器仍然会引发一些棘手的问题。
是否有任何理由不应该能够推断出我已经指定的类型,或者在我的代码示例中是否存在天真的错误?
编辑:由于它不是足够
我知道如何解决它明确的,我只是好奇,对于为什么在接口的静态成员/协议是有问题的解释。
protocol NodeSolver {
static func solve(_ nodes: [Node]) -> [Node]
}
func findPath<T: NodeSolver>(nodes: [Node]) -> [Node] {
return T.solve(nodes)
}
您可以享受这个令人难以置信的QA .. http://stackoverflow.com/questions/37240091 – Fattie
@ luk2302我指定类型NodeSolver(参见:) –
SacredGeometry
@ luk2302所以这个答案是类必须是静态的? 我不明白为什么编译器wouldnt能够推断类型。 我正在调用一个类型的静态成员。所有它应该需要的是类型信息。我正在交给它的泛型类型参数 – SacredGeometry