Расширить массив в YAML?

Предположим, что у меня есть:

base_array:
  -1
  -2

как я мог бы сделать что-то вроде:

my_array: << base_array
  -3

так что my_array был [1,2,3]

Обновление: я должен указать, что я хочу, чтобы расширение выполнялось внутри самого YAML.

Ответ 1

base_array: &base_array_alias
  - 1
  - 2

my_array:
  - <: *base_array_alias
  - 3

Ответ 2

Поскольку уже прокомментированная проблема № 35 существует, клавиши слияния << вам не помогут. Это только сливает/вставки ссылочных ключей в карту (см YAML документов слияния). Вместо этого вы должны работать с последовательностями и использовать anchor & и alias *.

Итак, ваш пример должен выглядеть так:

base_list: &base
    - 1
    - 2

extended: &ext
    - 3

extended_list:
    [*base, *ext]

Будет выдавать результат в виде (JSON):

{
  "base_list": [
    1, 
    2
  ], 
  "extended": [
    3
  ], 
  "extended_list": [
    [
      1, 
      2
    ], 
    [
      3
    ]
  ]
} 

Хотя это не совсем то, что вы ожидали, но, возможно, ваша среда синтаксического анализа/загрузки может сгладить вложенный массив/список в простой массив/список.

Вы всегда можете проверить YAML онлайн, например, использовать: