作为参数的元组数组 - 类型看起来相同但不是

时间:2015-11-09 12:31:56

标签: swift types swift2

作为尝试创建一个受this blog post孤独的有序词典的一部分,我试图实现一个地图功能。我的有序字典本质上是一个元组数组的包装结构。这是我的结构的相关部分:

struct od<kT: Hashable, vT> {
    typealias kv = (key:kT, value:vT)
    private var tuples: Array<kv> = []
    init() {}
    init(_ tupleArgs: kv...) {
        tuples = tupleArgs
    }
    func map<nkT:Hashable, nvT>(transform: (kv) -> (key:nkT, value:nvT)) -> od<nkT, nvT> {
        let arr = tuples.map(transform)
        return od<nkT, nvT>(arr)
    }
}

尝试初始化od<nkT, nvT>(are)处的返回值时出现问题,我得到的错误是:

Cannot convert value of type '[(key: kT, value: vT)]' to expected argument type '[(key: _, value: _)]'

我最初在地图功能的主体上排成一行,错误信息有点神秘,但基本相同。 (Xcode抱怨转换函数的类型而不是返回值的类型)

如果它有用,我也有a gist with the full code

0 个答案:

没有答案