字典的零合并运算符
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]
正在尝试访问/检查字典中的键并添加值。
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]