Valor padrão do Swift Dictionary
Um padrão com o qual me acostumei com os defaultdicts do Python é um dicionário que retorna um valor padrão se o valor de uma determinada chave não tiver sido explicitamente definido. Tentar fazer isso no Swift é um pouco detalhado.
var dict = Dictionary<String, Array<Int>>()
let key = "foo"
var value: Array<Int>! = dict[key]
if value == nil {
value = Array<Int>()
dict[key] = value
}
Sei que posso criar uma classe que faz isso, mas o Dicionário real deve ser acessado por meio de uma propriedade para usar qualquer um dos outros métodos normais do Dictionary
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
}
}
}
Existe um padrão melhor para isso?