gpt4 book ai didi

Swift 字典默认值

转载 作者:搜寻专家 更新时间:2023-10-31 08:09:37 24 4
gpt4 key购买 nike

我已经习惯了 Python 的 defaultdicts 的模式是一个字典,如果给定键的值没有明确设置,它会返回一个默认值。尝试在 Swift 中执行此操作有点冗长。

var dict = Dictionary<String, Array<Int>>()
let key = "foo"
var value: Array<Int>! = dict[key]
if value == nil {
value = Array<Int>()
dict[key] = value
}

我意识到我可以创建一个类来执行此操作,但是必须通过属性访问实际的 Dictionary 才能使用任何其他正常的 Dictionary 方法

class DefaultDictionary<A: Hashable, B> {
let defaultFunc: () -> B
var dict = Dictionary<A, B>()

init(defaultFunc: () -> B) {
self.defaultFunc = defaultFunc
}
subscript(key: A) -> B {
get {
var value: B! = dict[key]
if value == nil {
value = defaultFunc()
dict[key] = value
}
return value
}
set {
dict[key] = newValue
}
}
}

有更好的模式吗?

最佳答案

这在 Swift 4 中发生了变化,现在有一种方法可以读取键值或在键不存在时提供默认值。例如:

let person = ["name": "Taylor", "city": "Nashville"]
let name = person["name", default: "Anonymous"]

这在修改字典值时特别有用,因为你可以这样写代码:

var favoriteTVShows = ["Red Dwarf", "Blackadder", "Fawlty Towers", "Red Dwarf"]
var favoriteCounts = [String: Int]()

for show in favoriteTVShows {
favoriteCounts[show, default: 0] += 1
}

我在文章 What's new in Swift 4 中介绍了此更改和其他更改.

关于Swift 字典默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32415188/

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