给定一个目录和一个键,我想增加该键的值,如果它存在于字典中,或者将其初始化为1.
字典类型是Dictionary,但是按照设计,此键的值类型将始终为Int,因为它只会被此代码更改.
我到目前为止的代码如下所示,但希望以快捷的方式优化它.
let v = dict[key] as? Int
if v != nil {
dict[key] = v! + 1
} else {
dict[key] = 1
}
Run Code Online (Sandbox Code Playgroud)
一种方法是使用nil合并运算符:
dict[key, default: 0] += 1
Run Code Online (Sandbox Code Playgroud)
如果你知道字典的类型,你几乎可以做同样但没有强制转换:
dict[key] = ((dict[key] as? Int) ?? 0) + 1
Run Code Online (Sandbox Code Playgroud)
说明:
此operator(Value == Int)在左侧采用可选项,在右侧采用非可选项,如果不是,则返回可选项的值??.否则,它返回正确的值作为默认值.
像这个三元运算符表达式:
dict[key] = (dict[key] ?? 0) + 1
Run Code Online (Sandbox Code Playgroud)
你可以试试这个:
dict[key, default:0] += 1
Run Code Online (Sandbox Code Playgroud)
当dict[key, default: 0] += 1使用不是 key 中的 key 的 key 值执行时,指定的默认值 (0) 从下标返回,递增,然后添加到该键下的字典中。