Я пытаюсь найти красивый, чистый и общий c способ расширения словарей, чтобы я мог добавить элемент в массив, хранящийся в словаре, но без необходимости явно проверять, существует ли ключ для этой записи.
Другими словами, пусть расширение выполняет проверку ключей; если он существует, то добавьте элемент в массив, заключенный в этот ключ, если он не существует, затем создайте ключ, сохранив новый массив с этим элементом.
Код, который я сейчас использую, идет вот так:
dictionary[key] == nil ? dictionary[key] = [element] : dictionary[key]?.append(element)
Но я бы хотел написать что-то вроде:
dictionary.add(element, toArrayOn: key)
Расширение будет выглядеть примерно так:
extension Dictionary {
mutating func add(element: SomeElement, toArrayOn key: Key) {
// Check if self[key] exisists:
// If self[key] != nil, check if the value is Array<SomeElement>, if so append the element to the Array, if not throw an error.
// If self[key] == nil, make an empty Array<SomeElement> and insert the element.
}
}
}
Я понимаю, что это может быть немного натянуто, но мне интересно писать такого рода расширения, которые помогают очистить код. Я также начинаю догонять идею определения синтаксиса кода c, а затем выясняю, как это можно сделать. Приветствуются любые мысли по этому поводу!