源码

python – Swift Dictionary的默认值


我已经习惯使用Python的默认模式的模式是一个字典,如果没有明确设置给定键的值,则返回默认值.试图在Swift中这样做有点冗长.

var dict = Dictionary>()
let key = "foo"
var value: Array! = dict[key]
if value == nil {
    value = Array()
    dict[key] = value
}

我意识到我可以创建一个这样做的类,但是实际的Dictionary必须通过属性访问才能使用任何其他正常的Dictionary方法

class DefaultDictionary {
    let defaultFunc: () -> B
    var dict = Dictionary()

    init(defaultFunc: () -> B) {
        self.defaultFunc = defaultFunc
    }
    subscript(key: A) -> B {
        get {
            var value: B! = dict[key]
            if value == nil {
                value = defaultFunc()
                dict[key] = value
            }
            return value
        }
        set {
            dict[key] = newValue
        }
    }
}

这有更好的模式吗?

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/python-swift-dictionarydemorenzhi.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:9月 26, 2019 at 09:35 下午

热评文章