在Swift Dictionary中增加或初始化Int的最佳方法

Dro*_*com 4 swift

给定一个目录和一个键,我想增加该键的值,如果它存在于字典中,或者将其初始化为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)

Qby*_*yte 8

一种方法是使用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)


pot*_*o04 5

你可以试试这个:

dict[key, default:0] += 1
Run Code Online (Sandbox Code Playgroud)

dict[key, default: 0] += 1使用不是 key 中的 key 的 key 值执行时,指定的默认值 (0) 从下标返回,递增,然后添加到该键下的字典中。

看苹果文档