在阅读Swift 语言指南中关于Opaque Types的文档时,接近尾声的是片段:
// Error: Not enough information to infer C.
func makeProtocolContainer<T, C: Container>(item: T) -> C {
return [item]
}
Run Code Online (Sandbox Code Playgroud)
Container有一个关联类型 ,Item并且Array被扩展为符合Container。为什么编译器缺少信息来推断这是一个Array<T>?
另一个令人困惑的一点是,对于泛型函数,它们通常被编写为使用客户端代码指定的任何类型。那么不应该由客户端代码来决定是什么C而不是强加其返回类型的函数Array吗?