Как добавить существующий объект в 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)
Другие вопросы по тегам