Можно ли добавить элемент в карту в файле YAML после того, как карта уже определена?
Например, если у меня есть файл:
fruits:
bananas:
quantity: 4
apples:
quantity: 2
grapes:
quantity: 37
vegetables:
lettuce:
quantity: 2
beets:
quantity: 4
и затем позже поймете, что моя карта «фрукты» не завершена, могу ли я что-нибудь сделать позже в файле (т. е. после определения карты «овощи»), чтобы добавить другой фрукт к существующей карте? Что-то где:
fruits:
oranges:
quantity: 4
будет добавлен к существующей карте вместо перезаписи?
Другими словами, есть ли правильный способ добавить «апельсины» к существующей карте «фрукты» в другом месте файла?
Немного предыстории: Я планирую использовать yaml-cpp с C ++. Я использую YAML в качестве формата входного файла для программы, которую я пишу. Я проанализирую файл, который создает пользователь, и переведу структуру в объекты в моей программе. Я хотел бы иметь возможность добавлять элементы на карту, потому что объекты (в данном примере «фрукты») обычно разбрасываются во входном файле, когда пользователь понимает, что они необходимы или используются рядом с другими объектами, которые на них ссылаются.
Неверно YAML иметь повторяющийся ключ. Например, следующее недействительно YAML:
fruits: foo
fruits: bar
Если ваш файл YAML начинается с:
fruits: whatever
bar: baz
тогда нет возможности изменить значение, связанное с ключом fruits
добавив в файл. Различные парсеры YAML могут интерпретировать повторяющиеся ключи по-своему, но спецификация определяет это как ошибку.
Вы можете постобработать файл YAML, если хотите, например:
fruits1: whatever
bar: baz
fruits2: something else
а затем в вашем коде, просто объедините их значения, связанные с fruits1
а также fruits2
(а также fruits3
, …) как вам нравится.
Других решений пока нет …