You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CUE语言如何实现列表追加?实践遇嵌套问题求解决

解决CUE中列表追加出现嵌套结构的问题

你的代码核心问题是循环内错误地给params定义了带字符串键的对象结构,导致列表追加后出现嵌套格式。要实现扁平的列表追加,需要直接对目标列表字段进行操作,利用CUE的列表合并语法。

修正后的代码

t: #input
uiSchema: {}
#input: {
    _stages: [{
        "id": 31,
        "jobs": [{
            "name": "echo",
            "stepType": "execute_shell",
        }]
    }, {
        "id": 32,
        "jobs": [{
            "name": "docker-build-push",
            "stepType": "docker_build_and_push",
        }]
    }]
}

spec: {
    params: [{
        name: "my-container"
    },...]
    workspaces: [
        {
            name: "git-credentials"
        },
    ]
}

// 匹配到docker_build_and_push类型的job时,追加参数到spec.params
for _, stage in t._stages {
    for job in stage.jobs {
        if job.stepType == "docker_build_and_push" {
            spec.params = spec.params + [{
                name: "appended container"
            }]
        }
    }
}

关键改动说明

  • 移除了原代码中错误的params: [ID=string]: {...}结构,这个结构会把params从列表转换成带字符串键的对象,直接导致后续追加操作产生嵌套。
  • 直接通过spec.params = spec.params + [...]的方式对原列表进行追加,CUE的+操作符对列表执行扁平合并,不会产生嵌套结构。
  • 调整循环写法,逻辑更直接:遍历所有stage和job,匹配到目标类型后直接修改spec.params字段。

执行结果

运行cue eval test.cue后,spec.params部分会输出你期望的扁平列表:

spec: {
    params: [
        {
            name: "my-container"
        },
        {
            name: "appended container"
        },
    ]
    workspaces: [
        {
            name: "git-credentials"
        },
    ]
}

内容的提问来源于stack exchange,提问作者gujiwork

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:05:25