字典的零合并运算符

Nil coalescing operator for dictionary

正在尝试访问/检查字典中的键并添加值。

myDict["Algebra"] 最初 returns nil。 为什么“零合并”在这里不起作用?

var myDict = [String : [Int]]()
myDict["Algebra"]?.append(contentsOf: [98,78,83,92]) ?? myDict["Algebra"] = [98,78,83,92]

尝试像您一样使用会给您带来错误: 可变运算符的左侧具有不可变类型“[Int]?”

加上括号就不会出现编译错误,而且可以正常工作

var myDict = [String : [Int]]()
myDict["Algebra"]?.append(contentsOf: [98,78,83,92]) ?? (myDict["Algebra"] = [98,78,83,92])
print(myDict) // ["Algebra": [98, 78, 83, 92]]

Swift Infix Operators.

的文档在这里

虽然这适用于括号,但您要解决的问题正是 default 下标所做的,而不会将 ?? 运算符滥用到隐式 if 语句中副作用:

myDict["Algebra", default: []].append(contentsOf: [98,78,83,92])

您可能还会发现此语法更清晰一些:

myDict["Algebra", default: []] += [98,78,83,92]