gpt4 book ai didi

swift - 通用字典扩展错误 - 对下标的引用不明确

转载 作者:可可西里 更新时间:2023-11-01 00:57:27 27 4
gpt4 key购买 nike

我正在 Swift 3 (Xcode 8.2.1) 中使用泛型,但我不明白为什么它无法编译。我还尝试了 self.updateValue... 也失败了。

extension Dictionary {
mutating func mergeWith<K: Hashable, V: AnyObject> (a: [K:V]) -> [K:V] {
for (k,v) in a {
self[k] = v // compile error: Ambiguous reference to member 'subscript'
}
}
}

我试图将泛型 K 和 V 的类型限制为适用于字典的类型,但这似乎不起作用?

最佳答案

这不是一个特别有用的错误,但问题是您要引入 本地通用占位符 KV在你的方法中——不需要以任何方式Dictionary相关的 KeyValue类型(请记住,通用占位符由调用者而不是被调用者满足)。

所以只需删除它们并使用现有的通用占位符 KeyValue相反,即采取 [Key : Value]范围。或者更好的是,利用 Swift automatically infers the generic placeholders 的事实当您在其自身内部引用它时,属于泛型类型,只需将参数键入为 Dictionary (将解析为 Dictionary<Key, Value> )。

extension Dictionary {
mutating func merge(with dict: Dictionary) {
for (key, value) in dict {
self[key] = value
}
}
}

还有 mutating方法通常不返回变异的实例,所以我从你的方法中删除了返回类型。

关于swift - 通用字典扩展错误 - 对下标的引用不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42652989/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com