Как добавить существующий объект в jsonnet?
Как добавить в существующий список?
Это недействительно:
local list = ['a', 'b', 'c'];
local list = list + ['e'];
1 ответ
То, что вы испытали, связано с рекурсивностью местных жителей в jsonnet. Так в local list = list + ['e']
список с правой стороны - это тот же список, что и с левой стороны, что приводит к бесконечной рекурсии при попытке его оценить.
Так что это будет работать так, как вы ожидаете:
local list = ['a', 'b', 'c'];
local list2 = list + ['e'];
На этот раз он правильно ссылается на ранее определенный список.
Если вам интересно, почему он был разработан таким образом, это полезно, потому что означает, что вы можете писать рекурсивные функции:
local foo(x) = if x == 0 then [] else foo(x - 1) + [x];
foo(5)
Что точно так же, как писать:
local foo = function(x) if x == 0 then [] else foo(x - 1) + [x];
foo(5)