如何在jsonnet中追加现有对象?

时间:2018-09-27 06:00:53

标签: jsonnet ksonnet

如何添加到现有列表中?

这无效:

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

local list = list + ['e'];

1 个答案:

答案 0 :(得分:2)

您遇到的情况是由于本地人在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)