gpt4 book ai didi

swift - 关于使用 ?? 的一些解释给字典赋值

转载 作者:行者123 更新时间:2023-11-28 15:12:50 26 4
gpt4 key购买 nike

目前我正在关注这本不错的 App Development with Swift 一书,到目前为止,一切都得到了很好的解释。尽管如此,在练习之后我发现了一段我很想更好地理解的代码。我已经尝试到处查找信息,但我什至不知道名称是什么或如何找到它。废话不多说,就是下面的内容:

我有一本字典:

var frequencyOfAnswers: [AnimalType: Int] = [:]

AnymalType 只是一个包含四种情况的 enum。然后他们在 frequencyOfAnswers 上执行映射:

let responseTypes = responses.map { $0.type }

到目前为止一切都很好。但是在接下来的迭代中:

for response in responseTypes {
frequencyOfAnswers[response] = (frequencyOfAnswers[response]
?? 0) + 1
}

我无法完全理解 ?? 的用法。我知道这里的重点是,如果新元素还没有进入字典,那么将被添加并且它的值为 1。如果它已经存在,那么它对应的整数值将增加 1 .

我想了解有关此语法的更多信息。如果你们中的任何人能为我提供一个好的文本、网页或解释,我将非常感激。

提前谢谢你。

最佳答案

?? 被称为“nil-coalescing”运算符。

很简单,它检查一个可选变量以查看它是否有值,并且:

  • 如果是,则解包并使用该值
  • 如果,则使用运算符右侧的值。

例如:

var cheese: String?
var tomatoes = cheese ?? "bread"

在这种情况下,变量 tomatoes 等于“bread”,因为变量 cheese 从未被分配过变量。

如果你这样做了:

var cheese: String?
cheese = "lettuce"
var tomatoes = cheese ?? "bread"

现在 tomatoes 等于“lettuce”,因为我们给了 cheese 一个值。因为 cheese 是可选的,所以该值会自动展开(这意味着我们可以直接使用它的值)。

如果您想阅读更多相关信息,请查看 Apple's documentation .

关于swift - 关于使用 ?? 的一些解释给字典赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47357710/

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