【问题标题】:How can make a custom extension for Dictionary in Swift?如何在 Swift 中为 Dictionary 制作自定义扩展?
【发布时间】:2021-01-03 01:29:29
【问题描述】:

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

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

【问题讨论】:

    标签: swift dictionary extension-methods


    【解决方案1】:

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

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


    其次,您需要将您的方法声明为 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]
    

    【讨论】:

    • 我不知道三个星号会在您的帖子中添加破折号。我必须记住这一点。 (哦,是的,和往常一样,答案很好。投票。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2019-09-18
    • 2015-11-05
    • 1970-01-01
    相关资源
    最近更新 更多