首页 > 解决方案 > Swift:有没有更好的方法将数据添加到作为函数参数的字典中?

问题描述

我将字典传递给函数,然后将一些数据添加到该字典并再次将其传递给另一个函数:

f(["initial": "initial"])

func f(_ dictionary: [String: Any]) {
    var mutatingDictionary = dictionary
    mutatingDictionary["test"] = "test"
    anotherFunction(mutatingDictionary)
}

我想知道是否有更好或更优雅的方法来做到这一点,而不必写 3 行,也许是处理变量的更好方法(比如不必重新创建 a mutatingDictionary)?

感谢您的帮助。

标签: swift

解决方案


merging(_:uniquingKeysWith:)会给你一个没有可变性的新副本。唯一的参数使它变得冗长。我想如果它困扰你,你可以制作你自己的字典扩展名merging,它总是提供一个左转函数来实现唯一性:

f(["initial": "initial"])

func f(_ dictionary: [String: Any]) {
    anotherFunction(dictionary.merging(["test":"test"], uniquingKeysWith: { left, _ in left}))
}

推荐阅读