Значение по умолчанию в Swift Dictionary

Шаблон, к которому я привык с Python defaultdicts, представляет собой словарь, который возвращает значение по умолчанию, если значение для данного ключа не было явно установлено. Попытка сделать это в Swift немного многословна.

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

Я понимаю, что могу создать класс, который делает это, но затем к фактическому словарю нужно обращаться через свойство, чтобы использовать любой из других обычных методов словаря.

class DefaultDictionary<A: Hashable, B> {
    let defaultFunc: () -> B
    var dict = Dictionary<A, B>()

    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
        }
    }
}

Есть ли лучший шаблон для этого?

Ответы на вопрос(3)

Ваш ответ на вопрос