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

Terraform:如何编写三层嵌套for循环实现DRY(避免重复)

解决Terraform指标数组嵌套问题

你的问题出在嵌套循环生成了三维数组,而你需要的是一维数组结构。当前代码里每一层for都用[]包裹,导致最终输出是[[[...]]]的嵌套格式,不符合预期。

两种修复方式:

方式1:合并多层for表达式(推荐)

直接把三层for放在同一个数组生成表达式里,去掉中间的嵌套[],这样Terraform会直接生成一维数组:

metrics = [
  for i, k in local.keys :
  for metric in ["metric1", "metric2"] :
  for method in ["method1", "method2"] :
    [
      "Server", metric, "dim1", k, "dim2", method,
      { "region" : "...", "id" : "ms${method}${i}", "visible" : false }
    ]
]

方式2:用flatten函数展开嵌套数组

如果想保留原有的嵌套写法,在最外层用flatten()把三维数组扁平化:

metrics = flatten([
  for i, k in local.keys : [
    for metric in ["metric1", "metric2"] : [
      for method in ["method1", "method2"] : [
        "Server", metric, "dim1", k, "dim2", method,
        { "region" : "...", "id" : "ms${method}${i}", "visible" : false }
      ]
    ]
  ]
])

两种方式最终都会生成你需要的格式:

[["Server", "metric1", "dim1", "key1", "dim2", "method1", {...}], [...], ...]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:50:55