1

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

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

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

2 回答 2

5

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

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

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

myDict["Algebra", default: []] += [98,78,83,92]
于 2021-01-01T16:42:58.747 回答
2

尝试像您一样使用会出现错误: 变异运算符的左侧具有不可变类型“[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 文档在这里。

于 2021-01-01T16:36:39.383 回答