首页 > 解决方案 > 如何在 Swift 中为 Dictionary 制作自定义扩展?

问题描述

我正在尝试向 Dictionary 添加一个函数,这个函数称为 add,它有 2 个输入值(键和值)。我试图使函数是通用的,这意味着我希望键和值能够采用任何类型。我结束了这个无效的代码。接下来我应该怎么做才能使这个功能起作用?

extension Dictionary {
    func add<Key, Value>(key: Key, value: Value) {
        self[Key] = Value
    }
}

标签: swiftdictionaryextension-methods

解决方案


首先,您尝试将类型而不是实例分配给字典。

没有更多上下文,表达式的类型是模棱两可的):


其次,您需要将您的方法声明为 mutating。

无法通过下标进行赋值:下标只能获取)。


第三,您正在创建两个与 Dictionary 泛型 Key 和 Value 类型无关的新泛型类型。

无法将“Key”类型的值(实例方法“add(key:value:)”的通用参数)转换为预期的参数类型“Key”(通用结构“Dictionary”的通用参数)。


extension Dictionary {
    mutating func add(key: Key, value: Value) {
        self[key] = value
    }
}

var dict: [String: Int] = [:]
dict.add(key: "One", value: 1)
dict  // ["One": 1]

推荐阅读