Как добавить существующий объект в jsonnet? - PullRequest
0 голосов
/ 27 сентября 2018

Как добавить в существующий список?

Недопустимо:

local list = ['a', 'b', 'c'];

local list = list + ['e'];

1 Ответ

0 голосов
/ 28 сентября 2018

То, что вы испытали, связано с рекурсивностью местных жителей в 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)
...