gpt4 book ai didi

swift - 使用数组和字典在 Swift 中实现多重映射

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

我正在尝试在 Swift 中实现一个基本的多重映射。这是一个相关的(非功能性的)片段:

class Multimap<K: Hashable, V> {
var _dict = Dictionary<K, V[]>()

func put(key: K, value: V) {
if let existingValues = self._dict[key] {
existingValues += value
} else {
self._dict[key] = [value]
}
}
}

但是,我在 existingValues += value 行遇到错误:

Could not find an overload for '+=' that accepts the supplied arguments

这似乎暗示值类型 T[] 被定义为不可变数组,但我找不到任何方法来显式声明它为可变数组。这在 Swift 中可能吗?

最佳答案

问题是您将 existingValues 定义为 let 的常量。但是,我建议将方法更改为:

func put(key: K, value: V) {
var values = [value]
if let existingValues = self._dict[key] {
values.extend(existingValues)
}
self._dict[key] = values
}
}

我觉得这样的意图更清楚,因为它不需要修改本地数组并在以后重新分配。

关于swift - 使用数组和字典在 Swift 中实现多重映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24197186/

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