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

如何在Jsonnet中单次split单行赋值多变量生成端口配置?

解法

Jsonnet 原生支持数组解构赋值,只需一次 std.split 即可完成两个变量的赋值,正确写法如下:

{
  // 此处可替换为 $.sharedConfig.ports 引用全局配置
  local ports = ['tcp-1514', 'tcp-8080', 'tcp-8443'],

  ports: [
    {
      // 核心语法:用方括号包裹变量列表完成数组解构
      local [proto, port] = std.split(port_obj, '-');
      name: port_obj,
      containerPort: std.parseInt(port), // 若配置要求端口为数字类型需加此行,要字符串可直接写 port
      protocol: proto
    } for port_obj in ports
  ]
}

报错原因说明

你之前的写法存在两个语法错误:

  1. :: 是 Jsonnet 中声明对象隐藏字段的语法,不能用于局部变量赋值,局部变量赋值统一用 =
  2. 多变量解构赋值需要用方括号包裹变量列表,不能直接用逗号分隔变量名

输出验证

上述代码执行后生成的 YAML 结构完全符合需求:

ports:
- name: "tcp-1514"
  containerPort: 1514
  protocol: "tcp"
- name: "tcp-8080"
  containerPort: 8080
  protocol: "tcp"
- name: "tcp-8443"
  containerPort: 8443
  protocol: "tcp"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:09:03