目前我正在关注这本不错的 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/