gpt4 book ai didi

swift - 在 Swift 中构建字典扩展以作为值附加到数组

转载 作者:行者123 更新时间:2023-12-03 19:10:13 31 4
gpt4 key购买 nike

我试图找到一种很好的、​​干净的和通用的扩展字典的方法,这样我就可以将一个元素添加到存储在字典中的数组中,而不必显式检查该条目的键是否存在。

换句话说,让扩展程序进行 key 检查;如果确实存在,则将该元素添加到包含在该键中的数组中,如果它不存在,则通过存储具有该元素的新数组来创建该键。

我现在使用的代码是这样的:
dictionary[key] == nil ? dictionary[key] = [element] : dictionary[key]?.append(element)
但我很想写一些类似的东西:
dictionary.add(element, toArrayOn: key)
扩展看起来像这样:

extension Dictionary {

mutating func add(element: SomeElement, toArrayOn key: Key) {
// Check if self[key] exisists:
// If self[key] != nil, check if the value is Array<SomeElement>, if so append the element to the Array, if not throw an error.
// If self[key] == nil, make an empty Array<SomeElement> and insert the element.
}
}
}

我意识到这可能有点牵强,但我发现编写这些有助于清理代码的扩展很有趣。我也开始追赶决定特定代码语法的想法,然后弄清楚如何实现它。
对此的任何想法将是非常受欢迎的!

最佳答案

这是可能的解决方案。使用 Xcode 11.4 测试

extension Dictionary {

mutating func add<T>(_ element: T, toArrayOn key: Key) where Value == [T] {
self[key] == nil ? self[key] = [element] : self[key]?.append(element)
}
}

关于swift - 在 Swift 中构建字典扩展以作为值附加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62446409/

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