小编Can*_*ich的帖子

为什么 Swift 编译器不能通过关联项推断协议的返回类型?

在阅读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吗?

compiler-construction protocols swift

5
推荐指数
1
解决办法
563
查看次数

标签 统计

compiler-construction ×1

protocols ×1

swift ×1