Terraform中setunion函数能否直接合并列表?是否需先转集合?
Terraform setunion 函数与列表合并问题解答
setunion是否需要先手动用toset转换列表?
不需要。Terraform的setunion函数会自动将传入的列表隐式转换为集合,无需提前调用toset处理每个列表。直接传入列表作为参数即可,函数内部会完成类型转换并计算并集。能否直接用setunion合并两个列表,而非先拼接再转集合?
完全可以,这也是setunion针对这类场景的标准用法。setunion的核心作用就是计算多个集合的并集,传入多个列表时,它会分别将每个列表转为集合、自动去重后合并,最终输出一个无重复元素的集合——这刚好匹配for_each参数对集合类型(元素唯一)的要求。
举个实际使用的例子:
variable "list1" { type = list(string) default = ["a", "b", "c"] } variable "list2" { type = list(string) default = ["c", "d", "e"] } resource "null_resource" "example" { for_each = setunion(var.list1, var.list2) # 此处可添加资源配置 }
上述代码中,setunion(var.list1, var.list2)会直接生成集合{"a","b","c","d","e"},可直接用于for_each。相比先通过concat拼接列表再转集合的方式,setunion不仅更简洁,还能自动处理重复元素,避免for_each因重复元素报错。
内容的提问来源于stack exchange,提问作者Shaik Zakir Hussain
相关产品推荐
相关产品推荐

