如何嵌套Jsonnet对象推导并让内层循环执行不同次数?
解决Jsonnet对象推导的嵌套迭代问题
问题出在循环顺序上,Jsonnet的推导循环是从右往左执行的,你原来把grp的循环放在n的循环后面,导致遍历n时grp还未定义,自然没法调用grp.count。
调整循环顺序,先遍历分组对象,再基于每个分组的count生成对应的数字范围,就能实现每个分组生成对应数量的键:
{ ["%s-thing-%i" % [grp.name, n]]: { name: grp.name, // 所有需要复用的内容直接写在这里即可 } for grp in [{name: "foo", count: 2}, {name: "bar", count: 4}] for n in std.range(1, grp.count) }
这段代码运行后会生成你想要的单层对象:包含2个foo-thing-*键和4个bar-thing-*键,每个键对应的对象结构保持一致。
内容的提问来源于stack exchange,提问作者Nick T
相关产品推荐
相关产品推荐

