gpt4 book ai didi

swift - 让语句更清晰 : checking object for key in dictionary

转载 作者:行者123 更新时间:2023-11-28 09:51:09 25 4
gpt4 key购买 nike

我有类型的字典 - [String : [MyClass]]

我有 MyClass 类型的数组,我想要检查的是,我的字典是否包含特定键的 MyClass 对象数组。如果是,它会将元素附加到数组,如果不是,它会创建具有单个元素的新数组 MyClass。我最终得到了:

for item in items{
if let _ = dict[key] {
// Add operations if corresponding array exist
dict[key]?.append(item)
} else {
// Create array if need
dict[key] = [item]
}
}

它工作但看起来有点丑,我使用可选绑定(bind)来检查数组是否存在,但不使用结果(通配符模式 _)。

有没有办法让代码看起来更短更简洁?谢谢。

最佳答案

首先,您可以测试获取带有可选绑定(bind)的现有值,然后附加(或设置)所有新项目:

if let oldItems = dict[key] {
dict[key] = oldItems + items
} else {
dict[key] = items
}

这可以通过 nil-coalescing 运算符 ?? 来简化:

dict[key] = (dict[key] ?? []) + items

Swift 4 中,您可以简单地使用 subscript method with a default value :

dict[key, default: []] += items
// Or:
dict[key, default: []].append(contentsOf: items)

独立示例:

var dict = ["foo": [1, 2, 3]]

dict["foo", default: []] += [4, 5]
dict["bar", default: []] += [6,7]

print(dict) // ["bar": [6, 7], "foo": [1, 2, 3, 4, 5]]

关于swift - 让语句更清晰 : checking object for key in dictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47739325/

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